|
|
Postitatud 20.02.2019 14:44:57
|
|
|
|

Olen ka Java osas pooleli, kevadise pere ämbriga väga kursis ning olen loonud projektiraamistiku, mis põhineb veebipõhistel õpetustel ja omaenda kogemustel.
Projekti keskkond:jdk versioon: 1.8.0_171, mysql versioon: 5.7.17, spring boot: 2.1.1.RELEASE, arendustööriistad: idea.
Talveunne ja JPA
Veebiprojekt selles artiklis kasutab Hibernate'i püsivuskihi raamistikuna. Spring Bootis peame mõistma veel üht kontseptsiooni: JPA
Eelmine lause võib olla mitmetähenduslik, kuid see ei tähenda, et JPA oleks Spring Booti kontseptsioon. Selle asemel on see Java Persistence API, mis tõlgitakse hiina keelde kui Java Persistence Layer API.
JPA on standardspetsifikatsioon, mis põhineb ORM-il (või O/R kaardistusel), kus JPA määratleb ainult standardreeglid ega paku rakendust.
Praegu on JPA peamised rakendused Hibernate, EclipseLink, OpenJPA jne.
Tänu Hibernate'i domineerimisele andmejuurdepääsu lahendustehnoloogia valdkonnas domineerib JPA standard põhimõtteliselt Hibernate.
SpringBoot on automaatrelv
Spring Data JPA on arendajatele mõeldud liidese tööriistana Hibernate raamistiku rakendamiseks. Meie Spring Boot pakub täielikult automatiseeritud "automaatset sõltuvusmoodulit": spring-boot-starter-data-jpa
POM sõltuvusstruktuur:
Kas kellelgi on küsimusi pom-faili kohta ilma viiteta talveuneseisundi kohta?
Põhjus on selles, et nagu ülaloleval joonisel näidatud, sõltub spring-boot-starter-data-jpa hibernate-core'ist ning kui viidatakse spring-boot-starter-data-jpa-le, tutvustab maven projekt automaatselt paketti, millele ta sõltub.
application.yml profiil:
Vedru konfiguratsiooni andmeallika ametlik link:Hüperlingi sisselogimine on nähtav.
########################################## ###datasource - Täpsusta mySQL andmebaasi ühenduse info ###spring.datasource.url: MySQL aadress ###spring.datasource.user: Andmebaasi kasutajanimi ###spring.datasource.password: Andmebaasi parool ###spring.datasource.driverClassName: vastab andmebaasi draiverile ###spring.datasource.max-aktiivne: Määrab maksimaalse aktiivsete ühenduste arvu ühenduste kogumis ###spring.datasource.max-idle: Määrab maksimaalse vabade ühenduste arvu ühendusgrupis. ###spring.datasource.min-idle: Määrab minimaalse väärtuse, mida tuleb hoida (DBCP ja Tomcat ühendusbasseinide jaoks) ###spring.datasource.initial-size: Määrab ühenduste arvu, mis algselt loodi ühenduse basseini käivitamisel ### ###其他信息总结: ###spring.dao.exceptiontranslation.enabled, olenemata sellest, kas PersistenceExceptionTranslationPostProcessor on lubatud, on vaikimisi tõene ###spring.datasource.abandon-when-percentage-fullsets on protsent hüljatud ühendustest, mis suletakse või teatatakse ajapiirangu katkemisel ###spring.datasource.allow-pool-suspension Hikari basseini kasutamisel on seatud vääraks, kas lubada ühenduse basseini pausile ###spring.datasource.alternate-username-allowedkas alternatiivsed kasutajanimed on lubatud. ###spring.datasource.auto-commitMäärab, kas uuendused tehakse automaatselt. ###spring.datasource.catalog määrab vaikimisi kataloogi. ###spring.datasource.commit-on-return määrab, kas kinnitada kõik pooleliolevad tehingud ühenduse tagastamisel ###spring.datasource.connection-init-sql täpsustab, et ühendus luuakse ja lisatakse SQL-i, mis on käivitatud enne ühenduse kogumi. ###spring.datasource.connection-init-sqls DBCP ühenduse pooli kasutades määra initsialiseerimisel käivitatav sql ###spring.datasource.connection-properties. [key]Määrab atribuudid, mida tuleb seadistada DBCP ühendusgrupi kasutamisel ###spring.datasource.connection-test-query määratleb SQL-lause, mis kontrollib ühenduse täitmise legitiimsust ###spring.datasource.connection-timeoutMäärab ühenduse ajapiirangu millisekundites. ###spring.datasource.continue-on-errorKui andmebaasi initsialiseerides tekib viga, kas jätkata või mitte, on vaikimisi vale ###spring.datasource.data määrab Data (DML) skripti ###spring.datasource.data-source-class-name Määrab täielikult kvalifitseeritud andmeallika nime. ###spring.datasource.data-source-jndi määrab jndi aadressi ###spring.datasource.data-source-properties. Hikari ühenduse basseini kasutamisel määrake määratavad atribuudid ###spring.datasource.db-properties kasutab Tomcati ühendusbasseini, määrates määratavad omadused ###spring.datasource.default-auto-commit on automaatselt kinnitatud. ###spring.datasource.default-catalog määrab kataloogi, mis ühendub vaikimisi kataloogiga. ###spring.datasource.default-read-onlyKas seada vaikimisi ühendus ainult lugemiseks. ###spring.datasource.default-transaction-isolationMäärab ühendatud tehingute vaikimisi isolatsioonitaseme. ###spring.datasource.driver-class-name määrab draiveri klassinime, mis tuvastatakse vaikimisi automaatselt jdbc URL-ist. ###spring.datasource.fair-queue Kas kasutada FIFO tagasipöördumise ühendusi. ###spring.datasource.health-check-properties. [võti] Atribuut läbis, kui kasutati Hikari ühenduse basseini südamelöökide kontrolli ajal ###spring.datasource.idle-timeoutMäärab, kui kaua ühendust ei kasutata, mis on vaikimisi määratud passiivseks ###spring.datasource.ignore-exception-on-pre-loadKas erand ignoreeritakse ühenduse pooli initsialiseerimisel. ###spring.datasource.init-sqlsql, mis käivitatakse, kui ühendus luuakse ###spring.datasource.initial-size määrab, kui palju ühendusi algselt loodi ühenduste basseini käivitamisel ###spring.datasource.initialization-fail-fastÜhenduse pooli loomisel ei ole võimalik luua kindlat minimaalset arvu ühendusi, et erandit visata ###spring.datasource.initializeMäära, kas initsialiseerida andmeallikas data.sql, vaikimisi: true ###spring.datasource.isolate-internal-queries määrab, kas sisemised päringud tuleb karantiini panna, vaikimisi false ###spring.datasource.jdbc-interceptors Tomcati ühenduspooli kasutades määra jdbc interceptori ja semikooloni eraldamine ###spring.datasource.jdbc-url määrab JDBC URL-i. ###spring.datasource.jmx-enabled on vaikimisi lubatud: false ###spring.datasource.jndi-nameMääratleb jndi nime. ###spring.datasource.leak-detection-threshold Mitu millisekundit tuvastad ühenduse lekke, kui kasutad Hikari ühendusbasseini? ###spring.datasource.log-abaned kasutab DBCP ühenduse basseini mahajäetud avalduste või ühenduste jälgimiseks, vaikimisi on vale ###spring.datasource.log-valideerimisveadKui kasutad Tomcati ühenduse basseini, kas printida valideerimisviga. ###spring.datasource.login-timeoutMäärab andmebaasiga ühenduse ajapiirangu. ###spring.datasource.max-vanus määrab ühenduste maksimaalse vanuse ühenduste basseinis ###spring.datasource.max-eluiga määrab ühenduste maksimaalse eluea ühenduste basseinis millisekundites. ###spring.datasource.max-open-prepared-statements määrab maksimaalse avatud ettevalmistatud avalduste arvu. ###spring.datasource.max-wait määrab maksimaalse ooteaja, mille jooksul ühendusbassein ootab ühenduse naasmist, millisekundites. ###spring.datasource.maximum-pool-sizeMäärab ühenduste maksimaalse arvu ühendustes, sealhulgas aktiivsed ja tühikäigu ühendused. ###spring.datasource.min-evictable-idle-time-millisMäärab vaba ühenduse minimaalseks ajaks, mil see saab tühikäigul olla, enne kui see saab tühjendada. ###spring.datasource.min-idle määrab minimaalse väärtuse, mida tuleb hoida (DBCP ja Tomcati ühendusbasseinide puhul) ###spring.datasource.minimum-idle määrab ühenduse poolt hoitavate minimaalsete vabade ühenduste arvu ja HikariCP kasutamisel. ###spring.datasource.name Määra andmeallika nimi. ###spring.datasource.num-tests-per-eviction-run määrab objektide arvu iga tühikäigu objekti evitor lõime käivitamisel ###spring.datasource.passwordMäära andmebaasi parool. ###spring.datasource.platform määrab platvormi (skeem-${platvorm}.sql skeemi jaoks, mis vaikimisi on: kõik ###spring.datasource.pool-nameMäärab ühenduse basseini nime. ###spring.datasource.pool-prepared-statementsMäärab, kas laused ühendada. ###spring.datasource.propagate-interrupt-stateKas levitada katkestusseisundit, kui lõim katkestatakse ühenduse ootamise ajal. ###spring.datasource.read-onlyHikari ühenduse basseini kasutamisel, kas märkida andmeallikas ainult lugemiseks ###spring.datasource.register-mbeans määrab, kas Hikari ühendusbassein registreerib JMX MBeansid. ###spring.datasource.remove-abandoned määrab, kas ühendus kustutatakse kohe pärast katkestatud ajapiirangut. ###spring.datasource.remove-abandoned-timeoutMäärab aja, millal ühendus tuleks katkestada. ###spring.datasource.rollback-onreturnKas pöörduda tagasi ootel tehingu tagasi, kui ühendus tagastatakse. ###spring.datasource.schema määratleb skeemi (DDL) skripti. ###spring.datasource.separator määrab skripti initsialiseerimise avalduse eraldaja, vaikimisi: ; ###spring.datasource.sql-script-encoding määratleb SQL skriptide kodeerimise. ###spring.datasource.suspect-timeoutMäärab ajapiirangu enne katkestatud ühenduse printimist. ###spring.datasource.test-on-borrowKui laenad ühenduse basseinist, kas seda testida. ###spring.datasource.test-on-connect luuakse, kas ühendust testida ###spring.datasource.test-on-returnKas ühendus tagastatakse ühenduse basseini. ###spring.datasource.test-while-idleKas teha ühenduse test, kui ühendus on tühikäigul. ###spring.datasource.time-between-eviction-runs-millis Määrab tööajavahemiku tühikäigu ühenduse kontrollide, katkestatud ühenduse puhastamise ja tühikäigu ühenduste basseini suuruse vahel. ###spring.datasource.transaction-isolation määrab tehingute isolatsiooni taseme, mis määratakse Hikari ühenduste basseini kasutamisel ###spring.datasource.url määrab JDBC URL-i. ###spring.datasource.use-distosable-connection-façade mähib ühenduse, et takistada selle kasutamist pärast sulgemist. ###spring.datasource.use-võrdub, kas kasutada String.equals() == asendamiseks. ###spring.datasource.use-lock on ühendustoimingul lukustatud ###spring.datasource.usernameMäära andmebaasi nimi. ###spring.datasource.validation-interval määrab, mitu MS-i ühenduse kontrolli teha. ###spring.datasource.validation-query määrab SQL päringu lause ühenduse valideerimiseks ühenduse saamisel ühenduse saamiseks. ###spring.datasource.validation-query-timeoutMäärab ühenduse valideerimise päringu ajapiirangu. ###spring.datasource.validation-timeoutMäärab ühenduse valideerimise ajapiirangu, mis määratakse Hikari ühendusbasseini kasutamisel ###spring.datasource.validator-class-name Validaatori täielik kvalifikatsioon, mida kasutati päringu testimiseks. ###spring.datasource.xa.data-source-class-name Määrab andmeallika täieliku kvalifikaatori. ###spring.datasource.xa.properties määrab omadused, mis edastatakse XA andmeallikale ###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-aktiivne=20 spring.datasource.max-tühikäigu=8 spring.datasource.min-idle=8 spring.datasource.initial-size=10 ########################################## ##SPring JPA konfiguratsiooni info ###spring.jpa.database määrab sihtandmebaasi. ###spring.jps.show-sq: Kas kuvada SQL-lauseid ###spring.jpa.hibernate.ddl-auto määrab DDL-režiimi (puudub, valideeri, uuenda, loo-loo). Manustatud andmebaasi kasutamisel on vaikimisi loo-langeta, muidu seda pole. ###spring.jpa.hibernate.naming-strategyMäära nimepoliitika. ###其他: ###spring.jpa.database-platformMäärab sihtandmebaasi tüübi. ###spring.jpa.generate-ddl, kas skeemi käivitamisel algatada, on vaikimisi false ###spring.jpa.hibernate.ddl-auto määrab DDL-režiimi (puudub, valideeri, uuenda, loo-loo). Manustatud andmebaasi kasutamisel on vaikimisi loo-langeta, muidu seda pole. ###spring.jpa.hibernate.naming-strategyMäära nimepoliitika. ###spring.jpa.open-in-view registreerib OpenEntityManagerInViewInterceptor ja seob JPA EntityManageri päringulõimega, vaikimisi on õige ###spring.jpa.properties lisab JPA teenusepakkujale täiendavaid atribuute. ###spring.jpa.show-sql Kas SQL logi lubamine on vaikimisi seatud false väärtuseks ########################################## spring.jpa.database = MYSQL spring.jpa.show-sql = tõene spring.jpa.hibernate.ddl-auto = uuendus spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect spring.freemarker.charset=UTF-8
Kogu pakendi struktuur
Andmeallika seadistus:
Üksuse klass:
Andmebaasi tööliides:
Andmebaasi operatsiooniliides pärib JpaRepository generilise klassi ning kui see selle pärib, omandab see arendajatele antud jumaliku jõu:
Me saame neid meetodeid otse kutsuda andmebaasi operatsioonide tegemiseks ning kohandada HQL-i, et sooritada teisi meie isiksusele sobivaid toiminguid, näiteks:
Selles koodis, @Query kommentaari kaudu,HQL-i kirjutamise lõpetaminekus ":name" on kooskõlas alloleva @Param annotatsiooni parameetriga.
Märkus: HQL-i tabelinimi peaks olema ORM-kaardi klassinimi ning HQL-il on mõningaid erinevusi traditsioonilistest SQL-lausetest, näiteks "*" tähendus on erinev jne.
Kui sa pole harjunud HQL-i kasutama, võid kasutada ka SQL-lauseid:
Ülaltoodud meetod on endiselt tõhus, kui seda tehakse.nativeQuery to true tähendab SQL-keele kasutamist。
Kontrolleri klass:
Alusta projekti
Hibernate seob automaatselt entiteediklassid andmebaasiga, et luua meile asjakohased andmebaasitabelid, ning sobitab automaatselt andmebaasi tabelid annotatsioonide põhjal nagu @Table, @Column, @Id, @GeneratedValue (strateegia = GenerationType.AUTO) jne. Säästa palju tabeldamistööd.
(Enne projekti alustamist pead esmalt andmebaasi looma ja tabel luuakse automaatselt)
hibernate_sequence tabel on id genereerimise strateegia, @GeneratedValue annotatsiooniga, GenerationType.AUTO tähistab automaatset genereerimist, tingimusel, et id atribuut peab olema int või long type atribuut; kui see on stringi tüüpi id, siis selle annotatsiooni lisamine id peale annab kohe veateate. Seega, kui see on stringitüübi id, ei pea id-d @GeneratedValue märgistama (strategy = GenerationType.AUTO).
Taotle testi
Täida andmete pärimine ja andmete salvestamine vastavalt saamise ja postitamise kaudu.
TuginedaHüperlingi sisselogimine on nähtav.Liidese POST taotlus andmete lisamiseks, nagu näidatud järgmisel joonisel:
Andmebaasi päring on järgmine:
Hangi andmed järgmise liidese kaudu:
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Hüperlingi sisselogimine on nähtav.
Märkus: Nagu ülaltoodud liides nõudis, on Java väga tundlik täpi tundlikkuse suhtes, olgu selleks URL-aadress või parameetrid, see peab olema tähetundlik! Kui täht on suur- või väiketähtedega, põhjustab see, et päring ei jõua liidesesse või parameeter jääb tühjaks!
Druid jälgib järgmisi olukordi:
Lõpuks lisa lähtekood:
Turistid, kui soovite näha selle postituse peidetud sisu, palun Vastuse
(Lõpp)
|
Eelmine:Andmeallika seadistamine ebaõnnestusJärgmine:Jieyou pärastlõunatee | Kolmapäev, 20. veebruar 2019
|