|
|
Közzétéve 2019. 02. 20. 14:44:57
|
|
|
|

Én is félig kész vagyok a Java-ban, nem vagyok túl jártas a tavaszi családi vödörrel, és egy projektkeretet építettem online oktatóanyagok és néhány saját tapasztalatom alapján.
Projektkörnyezet:jdk verzió: 1.8.0_171, mysql verzió: 5.7.17, spring boot: 2.1.1.RELEASE, fejlesztő eszközök: idea.
Hibernáció és JPA
A cikkben szereplő webprojekt a Hibernate-et használja a tartóssági réteg keretrendszerként. A Spring Bootban egy másik fogalmat is meg kell értenünk: JPA
Az előző mondat talán kétértelmű, de ez nem jelenti azt, hogy a JPA a Spring Boot fogalma lenne. Ehelyett a Java Persistence API-t használjuk, amelyet kínaiul Java Persistence Layer API-ként fordítanak.
A JPA egy szabványos specifikáció, amely az ORM-en (vagy O/R leképezésen) alapul, amelyben a JPA csak szabványos szabályokat határoz meg, és nem nyújt megvalósítást.
Jelenleg a JPA fő megvalósításai a Hibernate, EclipseLink, OpenJPA stb.
A Hibernate adathozzáférési felbontási technológia területén való dominancia miatt a JPA szabványt alapvetően a Hibernate uralja.
A SpringBoot egy automata puska
A Spring Data JPA interfész eszközként szolgál a fejlesztők számára a Hibernate keretrendszer alkalmazásához. A Spring Boot egy teljesen automatizált "automatikus függőségi modult" biztosít: spring-boot-starter-data-jpa
POM függőségi szerkezet:
Van valakinek kérdése a pom fájlról, amire nincs hivatkozás a hibernációhoz?
Ennek oka, hogy ahogy a fenti ábrán látható, a spring-boot-starter-data-jpa a hibernate-core-tól függ, és amikor a spring-boot-starter-data-jpa referenciáját használjuk, a maven projekt automatikusan bevezeti azt a csomagot, amelyhez támaszkodik.
application.yml Profil:
Tavaszi konfigurációs adatforrás hivatalos link:A hiperlink bejelentkezés látható.
########################################## ###datasource - Megadja a mysql adatbázis kapcsolati adatait ###spring.datasource.url: MySQL cím ###spring.datasource.user: Adatbázis felhasználónév ###spring.datasource.password: Az adatbázis jelszó ###spring.datasource.driverClassName: Az adatbázis illegősnek felel meg ###spring.datasource.max-aktív: Megadja a maximális aktív kapcsolatok számát a kapcsolati poolban ###spring.datasource.max-idle: Megadja a maximális számú szabad kapcsolatot a kapcsolati poolban. ###spring.datasource.min-idle: Megadja a minimális értéket, amelyet fenn kell tartani (DBCP és Tomcat kapcsolati poolok esetén) ###spring.datasource.initial-size: Megadja a kapcsolatok számát, amelyeket először létrehoztak a kapcsolat pool indításakor ### ###其他信息总结: ###spring.dao.exceptiontranslation.enabled függetlenül attól, hogy a PersistenceExceptionTranslationPostProcessor engedélyezve van, az alapértelmezett szabály igaz ###spring.datasource.abandon-when-percentage-fullsets az elhagyott kapcsolatok százaléka, amelyeket bezárnak vagy jelentenek az időszünet megszakításakor ###spring.datasource.allow-pool-suspension Hikari pool használatakor a hamisnak van állítva, hogy engedélyezik-e a kapcsolati pool szünetét. ###spring.datasource.alternate-username-allowed-engedélyezettek-e alternatív felhasználónevek. ###spring.datasource.auto-commitMegadja, hogy a frissítések automatikusan elkötelezettek-e. A ###spring.datasource.catalog megadja az alapértelmezett katalógust. ###spring.datasource.commit-on-return határozza meg, hogy a kapcsolat visszaküldése után az összes fennálló tranzakciót kötelezővé kell kötelezni. A ###spring.datasource.connection-init-sql azt határozza meg, hogy a kapcsolat a kapcsolat előtt jön létre és hozzáadva a SQL-hez, amelyet a kapcsolat pool előtt futtatnak. ###spring.datasource.connection-init-sqls DBCP kapcsolati pool használatakor határozd meg az inicializációkor végrehajtandó sql-t ###spring.datasource.connection-properties. [kulcs]Megadja a DBCP kapcsolati pool használatakor konfigurálandó attribútumokat ###spring.datasource.connection-test-query megadja azt az SQL utasítást, amely igazolja a kapcsolat végrehajtásának legitimitását ###spring.datasource.connection-timeoutMegadja a kapcsolat időlekérési idejét, milliszekundumokban. ###spring.datasource.continue-on-errorAmikor az adatbázist inicializálják, hibával találkozunk, hogy folytassuk-e vagy sem, az alapértelmezett szabály hamis. A ###spring.datasource.data megadja az Data (DML) szkriptet ###spring.datasource.data-source-class-name Megadja az adatforrás teljes minősített nevét. ###spring.datasource.data-source-jndi megadja a jndi címét ###spring.datasource.data-source-properties. A Hikari kapcsolati poolt használva határozd meg a beállításra kerülő attribútumokat ###spring.datasource.db-properties a Tomcat kapcsolati poolt használja, amely megadja a beállításra várható tulajdonságokat ###spring.datasource.default-auto-commit automatikusan kötelezővé válik. ###spring.datasource.default-catalog megadja azt a katalógust, amely az alapértelmezetthez csatlakozik. ###spring.datasource.default-read-only-Tönkre állítsuk az alapértelmezett kapcsolatot csak olvashatóvá. ###spring.datasource.default-transaction-isolationMegadja az alapértelmezett izolációs szintet a kapcsolt tranzakciókhoz. A ###spring.datasource.driver-class-name megadja az illesztőprogram osztálynevét, amelyet alapértelmezés szerint automatikusan észlel a jdbc URL-ről. ###spring.datasource.fair-queue Használja-e a FIFO visszacsatolásokat. ###spring.datasource.health-check-properties. [kulcs] Attribútum áthaladt, amikor a Hikari kapcsolati poolát használjuk szívverés ellenőrzése közben ###spring.datasource.idle-timeoutMegadja, mennyi ideig nincs használva a kapcsolat, ami alapértelmezetten tétlen állapotra van állítva ###spring.datasource.ignore-exception-on-pre-loadHogy a kivételt figyelmen kívül hagyjuk-e a kapcsolat poolának inicializálásakor. ###spring.datasource.init-sqlsql, amely akkor fut be, amikor kapcsolat létrejön ###spring.datasource.initial-size meghatározza a csatlakozások számát, amelyeket eredetileg létrehoztak a kapcsolat pool indításakor ###spring.datasource.initialization-fail-fastHa kapcsolati pool létrehozása, nem lehetséges meghatározott minimális számú kapcsolatot létrehozni kivétel létrehozásához ###spring.datasource.initializeMegadja, hogy inicializáljuk-e az adatforrást data.sql, alapértelmezett: true ###spring.datasource.isolate-internal-queries meghatározza, hogy a belső lekérdezéseket karanténba kell helyezni, alapértelmezett módon hamisra ###spring.datasource.jdbc-interceptors Tomcat kapcsolati pool használatakor határozd meg a jdbc interceptor és a célzó szétválasztást ###spring.datasource.jdbc-url megadja a JDBC URL-t. ###spring.datasource.jmx engedélyezett alapértelmezett: hamis ###spring.datasource.jndi-nameMegadja a jndi nevét. ###spring.datasource.leak-detection-threshold Hány milliszekundum észlelsz kapcsolati szivárgást, amikor a Hikari kapcsolati poolt használod? ###spring.datasource.log-abaned a DBCP kapcsolati poolt használja az elhagyott utasítások vagy kapcsolatok nyomon követésére, az alapértelmezett hiba ###spring.datasource.log-validation-errorTomcat connection pool használatakor, hogy kiírja-e validációs hibát. ###spring.datasource.login-timeoutMegadja az adatbázishoz való csatlakozás időtúli idejét. Az ###spring.datasource.max-age meghatározza a csatlakozások maximális korát a kapcsolati poolban Az ###spring.datasource.max-élet a kapcsolati pool maximális élettartamát milliszekundumban határozza meg. ###spring.datasource.max-open-prepared-statements meghatározza a maximális megnyitott előkészített kijelentések számát. Az ###spring.datasource.max-wait megadja a maximális várakozási időt, amíg a kapcsolat visszatér, milliszekundumokban. ###spring.datasource.maximum-pool-sizeMegadja a kapcsolati pool maximális kapcsolatainak számát, beleértve az aktív és tétlen kapcsolatokat is. ###spring.datasource.min-evicable-idle-time-millisMegadja a szabad kapcsolatot a minimális ideig tartó tétlenségre, mielőtt törölhető. ###spring.datasource.min-idle megadja a minimális értéket, amelyet fenn kell tartani (DBCP és Tomcat kapcsolati poolok esetén) ###spring.datasource.minimum-idle meghatározza a kapcsolat által fenntartott minimális szabad kapcsolatok számát, és amikor HikariCP használatos. ###spring.datasource.name Megadd az adatforrás nevét. ###spring.datasource.num-tests-per-eviction-run meghatározza az objektumok számát az egyes tétlen objektum evitor szálakor futtatásakor ###spring.datasource.passwordMegadja az adatbázis jelszót. ###spring.datasource.platform megadja a sémához szükséges platformot (schema-${platform}.sql, amely alapértelmezett: ###spring.datasource.pool-nameMegadja a kapcsolat pool nevét. ###spring.datasource.pool-prepared-statementsMegadja, hogy használjak-e utasításokat. ###spring.datasource.propagate-interrupt-state-propagate-state-e a megszakítási állapot terjedése, ha a szálat megszakítják a kapcsolat várakozása alatt. ###spring.datasource.read-onlyA Hikari kapcsolati pool használatakor, hogy az adatforrást csak olvashatónak jelöljenek-e ###spring.datasource.register-mbeans meghatározza azt a Hikari kapcsolati pool regisztrálja-e a JMX MBeans-t. A ###spring.datasource.repoista-abandoned megadja, hogy töröljék-e egy kapcsolatot közvetlenül az elhagyott időkérés után. ###spring.datasource.remove-abandoned-timeoutMegadja az időpontot, amikor a kapcsolatot el kell hagyni. ###spring.datasource.rollback-onreturnVissza kell fordítani egy függő tranzakciót a kapcsolat visszaküldésekor. ###spring.datasource.schema a a séma (DDL) szkriptet határozza meg. ###spring.datasource.separator megadja a szkript inicializálásához szolgáló utasítás-elválasztót, alapértelmezett: ; Az ###spring.datasource.sql-script-encoding SQL szkriptek kódolását határozza meg. ###spring.datasource.suspect-timeoutMegadja az időkorlátot az elhagyott kapcsolat nyomtatása előtt. ###spring.datasource.test-on-BorrowAmikor kapcsolatot kölcsönzel egy kapcsolati poolból, tesztelj-e a kapcsolatot. ###spring.datasource.test-on-connect létrejött, hogy teszteljük-e a kapcsolatot ###spring.datasource.test-on-return-Visszakerül-e a kapcsolat a kapcsolati poolba. ###spring.datasource.test-while-idle-Végezzek-e kapcsolattesztet, amikor a kapcsolat tétlen. ###spring.datasource.time-between-eviction-runs-millis Megadja a műveleti időintervallumot az üres kapcsolatellenőrzések, az elhagyott kapcsolat tisztítása és az üres kapcsolat készlet méretezése között ###spring.datasource.transaction-isolation meghatározza a tranzakciós izolációs szintet, amelyet a Hikari kapcsolati pool használatakor határoznak meg A ###spring.datasource.url megadja a JDBC URL-t. ###spring.datasource.use-disposable-connection-façade befonja a kapcsolatot, hogy megakadályozza annak használatát a zárás után. ###spring.datasource.use-equal, hogy a String.equals() helyettesítésére == használjuk-e. ###spring.datasource.use-lock zárolva van a kapcsolati műveletre ###spring.datasource.usernameMegadja az adatbázis nevét. A ###spring.datasource.validation-interval megadja, hány ms kell kapcsolatellenőrzést végrehajtani. ###spring.datasource.validation-query az SQL lekérdezési utasítást határozza meg a kapcsolat érvényesítéséhez a kapcsolat megszerzésekor. ###spring.datasource.validation-query-timeoutMegadja a kapcsolat validációs lekérdezésének időtúli idejét. ###spring.datasource.validation-timeoutMegadja a kapcsolat ellenőrzésének időkorlátját, amelyet a Hikari kapcsolati pool használatakor határoznak meg ###spring.datasource.validator-class-name Az érvényesítő teljes minősítője a lekérdezés teszteléséhez. ###spring.datasource.xa.data-source-class-name Megadja az adatforrás teljes minősítőjét. ###spring.datasource.xa.properties határozza meg az XA adatforráshoz továbbított tulajdonságokat ###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-active=20 spring.datasource.max-idle=8 spring.datasource.min-idle=8 spring.datasource.initial-size=10 ########################################## ##SPring JPA konfigurációs információk ###spring.jpa.database megadja a céladatbázist. ###spring.jps.show-sq: Hogy megjelenítsük-e SQL utasításokat ###spring.jpa.hibernate.ddl-auto megadja a DDL módot (none, validál, frissít, create-drop). Beágyazott adatbázis használatában az alapértelmezés a create-drop (create-drop), egyébként nincs. ###spring.jpa.hibernate.naming-strategyMegadja a névozási szabályzatot. ###其他: ###spring.jpa.database-platformMegadja a céladatbázis típusát. ###spring.jpa.generate-ddl, hogy a séma indításkor inicializálja-e, alapértelmezett hamisa ###spring.jpa.hibernate.ddl-auto megadja a DDL módot (none, validál, frissít, create-drop). Beágyazott adatbázis használatában az alapértelmezés a create-drop (create-drop), egyébként nincs. ###spring.jpa.hibernate.naming-strategyMegadja a névozási szabályzatot. ###spring.jpa.open-in-view regisztrálja az OpenEntityManagerInViewInterceptor-t, és a JPA EntityManager-et a kérésszálhoz köti, az alapértelmezett igaz A ###spring.jpa.properties további attribútumokat ad hozzá a JPA szolgáltatóhoz. ###spring.jpa.show-sql Az SQL log engedélyezése alapértelmezés szerint hamisnak van állítva. ########################################## spring.jpa.database = MYSQL spring.jpa.show-sql = igaz spring.jpa.hibernate.ddl-auto = frissítés spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect spring.freemarker.charset=UTF-8
Az egész csomagszerkezet
Adatforrás konfiguráció:
Egységosztály:
Adatbázis kezelőfelület:
Az adatbázis kezelőfelülete a JpaRepository generikus osztályból öröklik, és amikor ezt örökli, megszerzi azt az isteni hatalmat, amit a fejlesztőknek ad:
Ezeket a metódusosokat közvetlenül meg tudjuk hívni adatbázis-műveletek végrehajtására, és testreszabhatjuk a HQL-t is, hogy más, személyiségünkhöz illő műveleteket is teljesítsünk, például:
Ebben a kódban, @Query kommenten keresztül,Befejezte a HQL írásátahol a ":name" összhangban van az alábbi @Param annotációban szereplő paraméterrel.
Megjegyzés: A HQL táblanevének az ORM térkép osztálynevének kell lennie, és a HQL-nek van némi különbsége a hagyományos SQL állításokhoz képest, például a "*" jelentése eltér, stb.
Ha nem vagy hozzászokva a HQL-hez, SQL utasításokat is használhatsz:
A fenti módszer még akkor is hatékony, ha alkalmazzák.nativeQuery to true azt jelenti, hogy SQL nyelvet használ。
Vezérlő osztály:
Indítsd el a projektet
A Hibernate automatikusan leképezi az entitásosztályokat az adatbázishoz, hogy releváns adatbázis-táblákat hozzon létre számunkra, és automatikusan egyezik az adatbázis táblákat olyan annotációk alapján, mint az @Table, @Column, @Id, @GeneratedValue (strategy = GenerationType.AUTO), stb. Sok táblázati munkát spórolsz.
(A projekt elindítása előtt először az adatbázist kell építened, és a tábla automatikusan megjön létre.)
hibernate_sequence tábla egy azonosító generáló stratégia, @GeneratedValue annotálva, a GenerationType.AUTO az automatikus generálást jelenti, feltéve, hogy az id attribútumnak int vagy hosszú típusú attribútumnak kell lennie; ha az azonosító String típusú, akkor ennek az annotációnak az id fölé helyezése azonnal hibát jelent. Ezért, ha a String típus idjére van szükség, nem kell az id-t @GeneratedValue-vel annotálni (strategy = GenerationType.AUTO).
Kérj tesztet
Teljes adatkérés és adatmentés a get és post rendszeren keresztül.
hívA hiperlink bejelentkezés látható.Az interfész POST kérése adathozzáadásra, ahogy az alábbi ábrán látható:
Az adatbázis lekérdezése a következő:
A következő felületen keresztül szerezze meg az adatokat:
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
A hiperlink bejelentkezés látható.
Megjegyzés: Ahogy a fenti felület kérte, a Java nagyon érzékeny a kis- és nagybetűérzékenységre, legyen szó az URL címről vagy a paraméterekről, kis- és nagybetűérzékenynek kell lennie! Ha egy betű nagybetűs vagy kisbetűs, akkor a kérés nem jut el az interfészhez, vagy a paraméter üres lesz!
A druida a következő helyzeteket figyeli:
Végül csatoljuk a forráskódot:
Turisták, ha szeretnétek megnézni ennek a bejegyzésnek a rejtett tartalmát, kérlek Válasz
(Vége)
|
Előző:Nem sikerült beállítani egy adatforrástKövetkező:Jieyou délutáni tea | 2019. február 20., szerda
|