Aš taip pat pusiau keptas Java, ir aš nesu labai susipažinęs su pavasario šeimos kibiras, ir aš sukūriau projekto sistemą, pagrįstą internete vadovėliai ir kai kurių savo patirties.
Projekto aplinka:JDK versija: 1.8.0_171, mysql versija: 5.7.17, spyruoklinė įkrova: 2.1.1.RELEASE, kūrimo įrankiai: idea.
Užmigdyti ir JPA
Šiame straipsnyje pateiktas žiniatinklio projektas naudoja užmigdymo režimą kaip patvarumo sluoksnio sistemą. "Spring Boot" turime suprasti kitą sąvoką: JPA
Ankstesnis sakinys gali būti dviprasmiškas, bet tai nereiškia, kad JPA yra "Spring Boot" sąvoka. Vietoj to tai yra "Java Persistence API", kuri į kinų kalbą išversta kaip: "Java Persistence Layer API".
JPA yra standartinė specifikacija, pagrįsta ORM (arba O/R atvaizdavimu), kurioje JPA apibrėžia tik standartines taisykles ir neužtikrina įgyvendinimo.
Šiuo metu pagrindiniai JPA įgyvendinimai yra Hibernate, EclipseLink, OpenJPA ir kt.
Dėl "Hibernate" dominavimo duomenų prieigos raiškos technologijos srityje JPA standarte iš esmės dominuoja "Hibernate".
"SpringBoot" yra automatinis šautuvas
"Spring Data JPA" pateikiamas kaip sąsajos įrankis, skirtas kūrėjams taikyti užmigdymo sistemą. Mūsų "Spring Boot" suteikia visiškai automatizuotą "automatinį priklausomybės modulį": spring-boot-starter-data-jpa
POM priklausomybės struktūra:
Ar kas nors turi klausimų apie pom failą be citatos užmigdyti?
Priežastis ta, kad, kaip parodyta aukščiau esančiame paveikslėlyje, spring-boot-starter-data-jpa priklauso nuo hibernate-core, o nurodant spring-boot-starter-data-jpa, maven projektas automatiškai pristatys paketą, nuo kurio priklauso.
application.yml profilis:
Pavasario konfigūracijos duomenų šaltinio informacija oficiali nuoroda:Hipersaito prisijungimas matomas.
########################################## ###datasource - nurodykite mysql duomenų bazės ryšio informaciją ###spring.datasource.url: MySQL adresas ###spring.datasource.user: Duomenų bazės vartotojo vardas ###spring.datasource.password: duomenų bazės slaptažodis ###spring.datasource.driverClassName: atitinka duomenų bazės tvarkyklę ###spring.datasource.max-active: nurodo maksimalų aktyvių ryšių skaičių ryšių telkinyje ###spring.datasource.max-idle: nurodo maksimalų laisvų ryšių telkinyje skaičių. ###spring.datasource.min-idle: nurodo minimalią reikšmę, kurią reikia išlaikyti (DBCP ir Tomcat ryšių telkiniams) ###spring.datasource.initial-size: nurodo ryšių, iš pradžių užmegztų paleidus ryšių telkinį, skaičių ### ###其他信息总结: ###spring.dao.exceptiontranslation.enabled nesvarbu, ar įgalintas PersistenceExceptionTranslationPostProcessor, numatytasis nustatymas yra teisingas ###spring.datasource.abandon-when-percentage-fullnustato nutrauktų ryšių, kurie uždaromi arba apie kuriuos pranešama, kai baigiasi skirtasis laikas, procentą ###spring.datasource.allow-pool-suspension Naudojant Hikari telkinį, ar leisti ryšio telkiniui pristabdyti, nustatyta kaip false ###spring.datasource.alternate-username-allowedar leidžiami alternatyvūs vartotojo vardai. ###spring.datasource.auto-commitNurodo, ar naujinimai atliekami automatiškai. ###spring.datasource.catalog nurodo numatytąjį katalogą. ###spring.datasource.commit-on-return nustato, ar grąžinti visas neįvykdytas operacijas, kai ryšys grąžinamas ###spring.datasource.connection-init-sql nurodo, kad ryšys sukuriamas ir įtraukiamas į sql, vykdomą prieš ryšių telkinį. ###spring.datasource.connection-init-sqls Naudodami DBCP ryšių telkinį, nurodykite sql, kuris bus vykdomas inicijuojant ###spring.datasource.connection-properties. [key]Nurodo atributus, kurie turi būti konfigūruojami naudojant DBCP ryšių telkinį ###spring.datasource.connection-test-query nurodo SQL sakinį, kuris patikrina ryšio vykdymo teisėtumą ###spring.datasource.connection-timeoutNurodo ryšio skirtąjį laiką milisekundėmis. ###spring.datasource.continue-on-errorInicijuojant duomenų bazę, susiduriama su klaida, ar tęsti, ar ne, numatytoji reikšmė yra klaidinga ###spring.datasource.data nurodo duomenų (DML) scenarijų ###spring.datasource.data-source-class-name Nurodo pilną duomenų šaltinio pavadinimą. ###spring.datasource.data-source-jndi nurodo jndi adresą ###spring.datasource.data-source-properties. Kai naudojate Hikari ryšio telkinį, nurodykite atributus, kuriuos norite nustatyti ###spring.datasource.db-properties naudoja Tomcat ryšių telkinį, nurodydamas ypatybes, kurias reikia nustatyti ###spring.datasource.default-auto-commit yra automatiškai patvirtintas. ###spring.datasource.default-catalog nurodo katalogą, kuris jungiasi prie numatytojo. ###spring.datasource.default-read-onlyAr nustatyti numatytąjį ryšį kaip tik skaitomą. ###spring.datasource.default-transaction-isolationNurodo numatytąjį prijungtų operacijų izoliavimo lygį. ###spring.datasource.driver-class-name nurodo tvarkyklės klasės pavadinimą, kuris pagal numatytuosius nustatymus automatiškai aptinkamas iš jdbc URL. ###spring.datasource.fair-queue Ar naudoti FIFO grįžtamuosius ryšius. ###spring.datasource.health-check-properties. [raktas] Atributas, perduotas naudojant Hikari ryšio telkinį tikrinant širdies plakimą ###spring.datasource.idle-timeoutNurodo, kiek laiko ryšys nenaudojamas, kuris pagal numatytuosius nustatymus nustatytas kaip neveikiantis ###spring.datasource.ignore-exception-on-pre-loadAr inicijuojant ryšių telkinį nepaisoma išimties. ###spring.datasource.init-sqlsql, kuris vykdomas sukūrus ryšį ###spring.datasource.initial-size nurodo ryšių, iš pradžių užmegztų paleidus ryšių telkinį, skaičių ###spring.datasource.initialization-fail-fastKuriant ryšių telkinį, neįmanoma sukurti nurodyto minimalaus ryšių skaičiaus, kad būtų pateikta išimtis ###spring.datasource.initializeNurodykite, ar inicijuoti duomenų šaltinį naudojant data.sql, numatytasis: true ###spring.datasource.isolate-internal-queries nurodo, ar vidinės užklausos turi būti sulaikytos, pagal numatytuosius nustatymus kaip false ###spring.datasource.jdbc-interceptors Kai naudojate Tomcat ryšių telkinį, nurodykite jdbc perėmėją ir kabliataškio atskyrimą ###spring.datasource.jdbc-url nurodo JDBC URL. ###spring.datasource.jmx-enabled įjungtas pagal numatytuosius nustatymus: false ###spring.datasource.jndi-nameNurodo jndi pavadinimą. ###spring.datasource.leakion-detection-threshold Kiek milisekundžių aptinkate ryšio nuotėkį naudodami Hikari ryšio telkinį? ###spring.datasource.log-abandoned naudoja DBCP ryšių telkinį, kad sektų apleistus sakinius ar ryšius, numatytasis yra klaidingas ###spring.datasource.log-validation-errorsNaudojant Tomcat ryšio telkinį, ar spausdinti tikrinimo klaidą. ###spring.datasource.login-timeoutNurodo prisijungimo prie duomenų bazės skirtąjį laiką. ###spring.datasource.max amžius nurodo maksimalų ryšių telkinio ryšių amžių ###spring.datasource.max-lifetime nurodo maksimalų ryšių telkinio veikimo laiką milisekundėmis. ###spring.datasource.max-open-prepared-statementsnurodo maksimalų atidarytų išrašų skaičių. ###spring.datasource.max-wait nurodo maksimalų ryšio telkinio laukimo laiką milisekundėmis. ###spring.datasource.maximum-pool-sizeNurodo maksimalų ryšių telkinio ryšių skaičių, įskaitant aktyvius ir neveikiančius ryšius. ###spring.datasource.min-evictable-idle-time-millisNurodo nemokamą ryšį minimaliam laikui, kurį jis gali būti nenaudojamas, kol jį galima išvalyti. ###spring.datasource.min-idle nurodo minimalią reikšmę, kurią reikia išlaikyti (DBCP ir Tomcat ryšių telkiniams) ###spring.datasource.minimum-idle nurodo minimalų laisvų ryšių skaičių, kurį palaiko ryšys ir naudojant HikariCP. ###spring.datasource.name Nurodykite duomenų šaltinio pavadinimą. ###spring.datasource.num-tests-per-eviction-run nurodo objektų skaičių vykdant kiekvieną neveikiančio objekto evitor giją. ###spring.datasource.passwordNurodykite duomenų bazės slaptažodį. ###spring.datasource.platform nurodo platformą (schema-${platform}.sql naudoti schemai, kuri pagal numatytuosius nustatymus yra: all ###spring.datasource.pool-nameNurodo ryšių telkinio pavadinimą. ###spring.datasource.pool-prepared-statementsNurodo, ar telkti sakinius. ###spring.datasource.propagate-interrupt-stateAr skleisti pertraukimo būseną, jei gija nutraukiama laukiant ryšio. ###spring.datasource.read-onlyNaudojant Hikari ryšio telkinį, ar pažymėti duomenų šaltinį kaip tik skaitomą ###spring.datasource.register-mbeans nurodo, ar Hikari ryšių telkinys registruoja JMX MBeans. ###spring.datasource.remove-abandoned nurodo, ar panaikinti ryšį iškart pasibaigus skirtajam laikui. ###spring.datasource.remove-abandoned-timeoutNurodo laiką, kada ryšys turi būti nutrauktas. ###spring.datasource.rollback-on-returnAr atšaukti laukiančią operaciją grąžinant ryšį. ###spring.datasource.schema nurodo schemos (DDL) scenarijų. ###spring.datasource.separator nurodo sakinio skyriklį, skirtą scenarijui inicijuoti, numatytasis: ; ###spring.datasource.sql-script-encoding nurodo SQL scenarijų kodavimą. ###spring.datasource.suspect-timeoutNurodo skirtąjį laiką prieš spausdinant nutrauktą ryšį. ###spring.datasource.test-on-borrowSkolinantis ryšį iš ryšio telkinio, ar išbandyti ryšį. ###spring.datasource.test-on-connect sukurtas, ar išbandyti ryšį ###spring.datasource.test-on-returnAr ryšys grąžinamas į ryšių telkinį. ###spring.datasource.test-while-idleAr atlikti ryšio testą, kai ryšys neveikia. ###spring.datasource.time-between-eviction-runs-millis Nurodo veikimo laiko intervalą tarp laukimo ryšio tikrinimo, nutraukto ryšio valymo ir laukimo ryšio telkinio dydžio nustatymo ###spring.datasource.transaction-isolation nurodo operacijos izoliacijos lygį, kuris nurodomas naudojant Hikari ryšių telkinį ###spring.datasource.url nurodo JDBC URL. ###spring.datasource.use-disposable-connection-façade apvynioja ryšį, kad jis nebūtų naudojamas jį uždarius. ###spring.datasource.use-equals, ar naudoti String.equals() pakeisti ==. ###spring.datasource.use-lock užrakintas ryšio operacija ###spring.datasource.usernameNurodykite duomenų bazės pavadinimą. ###spring.datasource.validation-interval nurodo, kiek ms reikia atlikti ryšio patikrinimą. ###spring.datasource.validation-query nurodo SQL užklausos sakinį, skirtą ryšio patvirtinimui gaunant ryšį. ###spring.datasource.validation-query-timeoutNurodo ryšio tikrinimo užklausos skirtąjį laiką. ###spring.datasource.validation-timeoutNustato ryšio patvirtinimo skirtąjį laiką, kuris nurodomas naudojant Hikari ryšio telkinį ###spring.datasource.validator-class-name Visas tikrintuvo kvalifikatorius, naudojamas užklausai patikrinti. ###spring.datasource.xa.data-source-class-name Nurodo visą duomenų šaltinio kvalifikatorių. ###spring.datasource.xa.properties nurodo ypatybes, perduotas XA duomenų šaltiniui ###spring.datasource.url=jdbc:mysql://localhost:3306/test?user=root&password=root&useUnicode=true&characterEncoding=UTF8 ########################################## spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=root spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.max-aktyvus=20 spring.datasource.max tuščiąja eiga = 8 spring.datasource.min-idle=8 pavasaris.datasource.initial-size=10 ########################################## ##SPring JPA konfigūracijos informacija ###spring.jpa.database nurodo tikslinę duomenų bazę. ###spring.jps.show-sq: ar rodyti SQL sakinius ###spring.jpa.hibernate.ddl-auto nurodo DDL režimą (nėra, patvirtinti, atnaujinti, sukurti, sukurti-numesti). Naudojant įterptąją duomenų bazę, numatytasis nustatymas yra create-drop, kitaip jo nėra. ###spring.jpa.hibernate.naming-strategyNurodykite pavadinimų suteikimo strategiją. ###其他: ###spring.jpa.database-platformNurodo tikslinės duomenų bazės tipą. ###spring.jpa.generate-ddl ar inicijuoti schemą paleidžiant, numatytoji reikšmė yra false ###spring.jpa.hibernate.ddl-auto nurodo DDL režimą (nėra, patvirtinti, atnaujinti, sukurti, sukurti-numesti). Naudojant įterptąją duomenų bazę, numatytasis nustatymas yra create-drop, kitaip jo nėra. ###spring.jpa.hibernate.naming-strategyNurodykite pavadinimų suteikimo strategiją. ###spring.jpa.open-in-view registruoja OpenEntityManagerInViewInterceptor ir susieja JPA EntityManager su užklausos gija, numatytasis yra teisingas ###spring.jpa.properties prideda papildomų atributų prie JPA teikėjo. ###spring.jpa.show-sql Ar įjungti SQL žurnalą, pagal numatytuosius nustatymus nustatyta kaip klaidinga ########################################## spring.jpa.database = MYSQL spring.jpa.show-sql = true spring.jpa.hibernate.ddl-auto = atnaujinti spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.Improved NamingStrategy spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect pavasaris.freemarker.charset=UTF-8
Visa paketo struktūra
Duomenų šaltinio konfigūracija:
Subjekto klasė:
Duomenų bazės valdymo sąsaja:
Duomenų bazės veikimo sąsaja paveldi iš JpaRepository bendrosios klasės, o paveldėjusi ją įgyja dievišką galią, kurią suteikia kūrėjams:
Šiuos metodus galime tiesiogiai iškviesti duomenų bazės operacijoms atlikti, taip pat galime pritaikyti HQL, kad atliktume kitas mūsų asmenybę atitinkančias operacijas, tokias kaip:
Šiame kode, per @Query komentarą,Baigė rašyti HQLkur ":name" atitinka žemiau esančioje @Param anotacijos parametrą.
Pastaba: HQL lentelės pavadinimas turėtų būti ORM žemėlapio klasės pavadinimas, o HQL turi tam tikrų skirtumų nuo tradicinių SQL sakinių, pvz., "*" reikšmė skiriasi ir pan.
Jei nesate įpratę naudoti HQL, taip pat galite naudoti SQL sakinius:
Aukščiau pateiktas metodas vis dar yra veiksmingas, kai jis atliekamas.nativeQuery į true reiškia naudojant SQL kalbą。
Valdiklio klasė:
Pradėkite projektą
Hibernate automatiškai susieja objektų klases su duomenų baze, kad sukurtų mums atitinkamas duomenų bazės lenteles, ir automatiškai suderins duomenų bazės lenteles pagal tokius komentarus kaip @Table, @Column, @Id, @GeneratedValue (strategija = GenerationType.AUTO) ir kt. Sutaupykite daug lentelės darbo.
(Prieš pradėdami projektą, pirmiausia turite sukurti duomenų bazę, o lentelė bus sukurta automatiškai)
hibernate_sequence lentelė yra id generavimo strategija @GeneratedValue anotuota, GenerationType.AUTO reiškia automatinį generavimą, su sąlyga, kad id atributas turi būti int arba long type atributas, jei tai yra eilutės tipo id, pridėjus šią anotaciją ant id iškart bus pranešta apie klaidą. Todėl, jei tai yra eilutės tipo ID, jums nereikia komentuoti ID @GeneratedValue (strategija = GenerationType.AUTO).
Užsakyti testą
Užpildykite duomenų užklausą ir duomenų išsaugojimą atitinkamai per gauti ir paštu.
RemtisHipersaito prisijungimas matomas.Sąsaja POST prašo pridėti duomenų, kaip parodyta šiame paveikslėlyje:
Duomenų bazės užklausa yra tokia:
Gaukite duomenis per šią sąsają:
Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas.
Pastaba: Kaip reikalauja aukščiau pateikta sąsaja, "Java" yra labai jautri didžiosioms ir mažosioms raidėms, nesvarbu, ar tai URL adresas, ar parametrai, ji turi skirti didžiąsias ir mažąsias raides! Jei raidė yra didžiąja arba mažąja raide, užklausa nepasieks sąsajos arba parametras bus tuščias!
Druid stebi šias situacijas:
Galiausiai pridėkite šaltinio kodą:
Turistai, jei norite pamatyti paslėptą šio įrašo turinį, prašome Atsakyti
(Pabaiga)
|