|
|
Zverejnené 20. 2. 2019 14:44:57
|
|
|
|

Som tiež polovičatý v Jave a nie som veľmi oboznámený s jarným rodinným vedrom, a vytvoril som projektový rámec založený na online tutoriáloch a niektorých vlastných skúsenostiach.
Projektové prostredie:JDK verzia: 1.8.0_171, MySQL verzia: 5.7.17, Spring Boot: 2.1.1. RELEASE, vývojové nástroje: idea.
Hibernácia a JPA
Webový projekt v tomto článku používa Hibernate ako rámec pre perzistentnú vrstvu. V Spring Boot musíme pochopiť ďalší koncept: JPA
Predchádzajúca veta môže byť nejednoznačná, ale neznamená, že JPA je koncept v Spring Boot. Namiesto toho je to Java Persistence API, ktoré sa do čínštiny prekladá ako: Java Persistence Layer API.
JPA je štandardná špecifikácia založená na ORM (alebo O/R mapovaní), v ktorej JPA definuje iba štandardné pravidlá a neposkytuje implementáciu.
V súčasnosti sú hlavné implementácie JPA Hibernate, EclipseLink, OpenJPA a ďalšie.
Vďaka dominancii Hibernate v oblasti technológií riešenia prístupu k dátam je štandard JPA v podstate dominovaný Hibernate.
SpringBoot je automatická puška
Spring Data JPA je poskytovaný ako nástroj na rozhranie pre vývojárov na aplikáciu rámca Hibernate. Náš Spring Boot poskytuje plne automatizovaný "automatický závislostný modul": spring-boot-starter-data-jpa
Štruktúra závislosti POM:
Má niekto otázky ohľadom súboru pom bez citácie pre hibernáciu?
Dôvodom je, že ako je znázornené na obrázku vyššie, spring-boot-starter-data-jpa závisí od hibernate-core a pri odkazovaní na spring-boot-starter-data-jpa projekt maven automaticky predstaví balík, na ktorom závisí.
application.yml Profil:
Oficiálny odkaz na zdroj dát konfigurácie Spring:Prihlásenie na hypertextový odkaz je viditeľné.
########################################## ###datasource - Špecifikovať informácie o spojení s mysql databázou ###spring.datasource.url: MySQL adresa ###spring.datasource.user: Používateľské meno databázy ###spring.datasource.password: Heslo k databáze ###spring.datasource.driverClassName: Zodpovedá ovládaču databázy ###spring.datasource.max-aktívny: Určuje maximálny počet aktívnych spojení v poole spojení ###spring.datasource.max-nečinný: Určuje maximálny počet voľných spojení v poole spojení. ###spring.datasource.min-idle: Špecifikuje minimálnu hodnotu, ktorú treba udržiavať (pre DBCP a Tomcat connection pools) ###spring.datasource.initial-size: Špecifikuje počet pripojení vytvorených pri spustení poolu spojení ### ###其他信息总结: ###spring.dao.exceptiontranslation.enabled či je povolený PersistenceExceptionTranslationPostProcessor, predvolené platí ###spring.datasource.abandon-when-percentage-fullsets percento opustených pripojení, ktoré sú uzavreté alebo hlásené po opustení timeoutu ###spring.datasource.allow-pool-suspension Pri používaní Hikari poolu je nastavené, či povoliť pauzu spojovacieho poolu, nepravdivé ###spring.datasource.alternate-username-allowedči sú alternatívne používateľské mená povolené. ###spring.datasource.auto-commitŠpecifikuje, či sú aktualizácie automaticky uložené. ###spring.datasource.catalog špecifikuje predvolený katalóg. ###spring.datasource.commit-on-return určuje, či sa všetky nevyriešené transakcie potvrdia pri návrate spojenia ###spring.datasource.connection-init-sql špecifikuje, že spojenie sa vytvorí a pridá do SQL vykonaného pred poolom spojení. ###spring.datasource.connection-init-sqls Pri použití DBCP connection poolu určte sql, ktoré sa vykoná pri inicializacii ###spring.datasource.connection-properties. [key]Špecifikuje atribúty, ktoré sa majú konfigurovať pri použití DBCP connection poolu ###spring.datasource.connection-test-query špecifikuje SQL príkaz, ktorý overuje legitímnosť vykonania spojenia ###spring.datasource.connection-timeoutUrčuje čas vypršania spojenia v milisekundách. ###spring.datasource.continue-on-errorPri inicializácii databázy, keď narazíte na chybu, či pokračovať alebo nie, je predvolená hodnota nepravdivá ###spring.datasource.data špecifikuje Data (DML) skript ###spring.datasource.data-source-class-name Špecifikuje plne kvalifikovaný názov dátového zdroja. ###spring.datasource.data-source-jndi špecifikuje adresu jndi ###spring.datasource.data-source-properties. Pri použití Hikari connection poolu zadajte atribúty, ktoré sa majú nastaviť ###spring.datasource.db-vlastnosti využívajú Tomcat pool spojení, ktoré špecifikujú vlastnosti, ktoré majú byť nastavené ###spring.datasource.default-auto-commit sa automaticky commituje. ###spring.datasource.default-catalog špecifikuje katalóg, ktorý sa pripája k predvolenému. ###spring.datasource.default-read-onlyČi nastaviť predvolené pripojenie len na čítanie. ###spring.datasource.default-transaction-isolationŠpecifikuje predvolenú úroveň izolácie pre pripojené transakcie. ###spring.datasource.driver-class-name špecifikuje názov triedy ovládača, ktorý je automaticky detekovaný z URL jdbc v predvolenom nastavení. ###spring.datasource.fair-queue Či použiť FIFO návratové spojenia. ###spring.datasource.health-check-properties. [kľúč] Atribút prešiel pri použití Hikari connection poolu počas kontroly srdcového tepu ###spring.datasource.idle-timeoutŠpecifikuje, ako dlho sa spojenie nepoužíva, čo je predvolene nastavené na nečinnosť ###spring.datasource.ignore-exception-on-pre-loadČi je výnimka ignorovaná pri inicializácii connection poolu. ###spring.datasource.init-sqlsql, ktorý sa vykoná pri vytvorení spojenia ###spring.datasource.initial-size určuje počet spojení vytvorených pri spustení poolu spojení ###spring.datasource.initialization-fail-fast Pri vytváraní poolu spojení nie je možné vytvoriť špecifikovaný minimálny počet spojení na vyhodenie výnimky ###spring.datasource.initializeŠpecifikuj, či inicializovať zdroj dát pomocou data.sql, predvolené: true ###spring.datasource.isolate-internal-queries špecifikuje, či majú byť interné dotazy umiestnené do karantény, pričom predvolene nastavujú falošné ###spring.datasource.jdbc-interceptors Pri použití Tomcat connection poolu špecifikujte jdbc interceptor a oddelenie bodkočiarky ###spring.datasource.jdbc-url špecifikuje JDBC URL. ###spring.datasource.jmx-enabled je predvolene povolený: false ###spring.datasource.jndi-nameŠpecifikuje názov jndi. ###spring.datasource.leak-detection-threshold Koľko milisekúnd detegujete únik pripojenia pri používaní Hikari connection poolu? ###spring.datasource.log-abandoned používa DBCP connection pool na sledovanie opustených príkazov alebo spojení, predvoleným nastavením je false ###spring.datasource.log-validačné-chybyPri používaní Tomcat connection poolu, či vytlačiť validačnú chybu. ###spring.datasource.login-timeoutŠpecifikuje čas vypršania pre pripojenie k databáze. ###spring.datasource.max-vek určuje maximálny vek spojení v zásobníku spojení ###spring.datasource.max-životnosť určuje maximálnu životnosť spojení v zásobníku spojení, v milisekundách. ###spring.datasource.max-open-prepared-statementšpecifikuje maximálny počet pripravených vyhlásení, ktoré sa otvárajú. ###spring.datasource.max-wait určuje maximálnu dobu čakania, kým sa spojovací pool počká na návrat spojenia, v milisekundách. ###spring.datasource.maximum-pool-sizeUrčuje maximálny počet spojení v poole spojení, vrátane aktívnych a nečinných spojení. ###spring.datasource.min-evictable-idle-time-millisŠpecifikuje voľné spojenie na minimálny čas, počas ktorého môže byť nečinné, kým ho možno vymasť. ###spring.datasource.min-idle špecifikuje minimálnu hodnotu, ktorú je potrebné udržiavať (pre DBCP a Tomcat connection pooly) ###spring.datasource.minimum-idle určuje minimálny počet voľných pripojení udržiavaných spojením a pri použití HikariCP. ###spring.datasource.name Uveďte názov zdroja dát. ###spring.datasource.num-tests-per-eviction-run určuje počet objektov pri spustení každého idle object evitor vlákna ###spring.datasource.passwordZadajte heslo k databáze. ###spring.datasource.platform špecifikuje Platformu (schema-${platform}.sql pre schému, ktorá predvolene znamená: all ###spring.datasource.pool-nameŠpecifikuje názov connection poolu. ###spring.datasource.pool-prepared-statementsŠpecifikuje, či sa majú príkazy zoskupovať. ###spring.datasource.propagate-interrupt-stateČi propagovať stav prerušenia, ak je vlákno prerušené počas čakania na spojenie. ###spring.datasource.read-only Pri používaní Hikari connection poolu, či označiť dátový zdroj ako iba na čítanie ###spring.datasource.register-mbeans špecifikuje, či Hikari connection pool registruje JMX MBeans. ###spring.datasource.remove-abandoned špecifikuje, či sa má pripojenie okamžite po opustenom časovom limite vymazať. ###spring.datasource.remove-abandoned-timeoutUrčuje čas, kedy by sa spojenie malo opustiť. ###spring.datasource.rollback-on-returnČi vrátiť čakajúcu transakciu pri návrate spojenia. ###spring.datasource.schema špecifikuje skript Schema (DDL). ###spring.datasource.separator špecifikuje oddeľovač príkazov na inicializáciu skriptu, predvolený: ; ###spring.datasource.sql-skriptové kódovanie špecifikuje kódovanie SQL skriptov. ###spring.datasource.suspect-timeoutŠpecifikuje timeout pred vytlačením opusteného spojenia. ###spring.datasource.test-on-borrowPri požičiavaní spojenia z poolu spojení, či ho otestovať. ###spring.datasource.test-on-connect sa vytvorí, či už na testovanie spojenia ###spring.datasource.test-on-returnČi sa spojenie vráti do poolu spojení. ###spring.datasource.test-while-idleČi vykonať test pripojenia, keď je spojenie nečinné. ###spring.datasource.time-interween-eviction-runs-millis Špecifikuje časový interval prevádzky medzi kontrolami nečinnosti pripojenia, čistením opusteného spojenia a veľkosťou nečinného spojovacieho poolu ###spring.datasource.transaction-isolation špecifikuje úroveň izolácie transakcií, ktorá sa špecifikuje pri použití Hikari connection pool ###spring.datasource.url špecifikuje JDBC URL. ###spring.datasource.use-disposable-connection-façade obalí spojenie, aby zabránil jeho použitiu po jeho uzavretí. ###spring.datasource.use-equals, či použiť String.equals() na nahradenie ==. ###spring.datasource.use-lock je uzamknutý na operácii spojenia ###spring.datasource.usernameŠpecifikovať názov databázy. ###spring.datasource.validation-interval určuje, koľko ms vykonať kontrolu pripojenia. ###spring.datasource.validation-query špecifikuje SQL dotaz na validáciu spojenia pri získaní spojenia. ###spring.datasource.validation-query-timeoutŠpecifikuje čas vypršania pre dotaz na overenie spojenia. ###spring.datasource.validation-timeoutNastavuje čas vypršania pre validáciu spojenia, ktorý sa špecifikuje pri použití Hikari connection poolu ###spring.datasource.validator-class-name Plný kvalifikátor validátora použitý na testovanie dotazu. ###spring.datasource.xa.data-source-class-name Špecifikuje plný kvalifikátor dátového zdroja. ###spring.datasource.xa.properties špecifikuje vlastnosti odovzdané zdroju dát XA ###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 Informácie o konfigurácii JPA ###spring.jpa.database špecifikuje cieľovú databázu. ###spring.jps.show-sq: Či zobraziť SQL príkazy ###spring.jpa.hibernate.ddl-auto špecifikuje DDL režim (none, validate, update, create, create-drop). Pri používaní zabudovanej databázy je predvolené nastavenie create-drop, inak žiadne. ###spring.jpa.hibernate.naming-strategyŠpecifikujte politiku pomenovania. ###其他: ###spring.jpa.database-platformŠpecifikuje typ cieľovej databázy. ###spring.jpa.generate-ddl či inicializovať schému pri štarte, predvolene je false ###spring.jpa.hibernate.ddl-auto špecifikuje DDL režim (none, validate, update, create, create-drop). Pri používaní zabudovanej databázy je predvolené nastavenie create-drop, inak žiadne. ###spring.jpa.hibernate.naming-strategyŠpecifikujte politiku pomenovania. ###spring.jpa.open-in-view registruje OpenEntityManagerInViewInterceptor a viaže JPA EntityManager na vlákno požiadaviek, predvolené platí ###spring.jpa.properties pridáva ďalšie atribúty k poskytovateľovi JPA. ###spring.jpa.show-sql Či povoliť SQL log je predvolene nastavené na false ########################################## spring.jpa.database = MYSQL spring.jpa.show-sql = true spring.jpa.hibernate.ddl-auto = update spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect spring.freemarker.charset=UTF-8
Celá štruktúra balíka
Konfigurácia zdroja dát:
Trieda entít:
Operačné rozhranie databázy:
Databázové operačné rozhranie dedí z generickej triedy JpaRepository a keď ju zdedí, získa božskú moc, ktorú udeľuje vývojárom:
Tieto metódy môžeme priamo volať na vykonávanie databázových operácií a tiež môžeme prispôsobiť HQL na vykonávanie ďalších operácií, ktoré vyhovujú našej osobnosti, napríklad:
V tomto kóde, prostredníctvom @Query komentára,Dokončené písanie HQLkde ":name" je konzistentné s parametrom v @Param anotácii nižšie.
Poznámka: Názov tabuľky v HQL by mal byť názvom triedy ORM mapy a HQL sa líši od tradičných SQL príkazov, napríklad význam slova "*" je odlišný a podobne.
Ak nie ste zvyknutí používať HQL, môžete použiť aj SQL príkazy:
Vyššie uvedená metóda je stále účinná, keď sa vykonáva.nativeQuery to true znamená pomocou SQL jazyka。
Trieda ovládača:
Začnite projekt
Hibernate automaticky priradí triedy entít do databázy, aby vytvoril relevantné databázové tabuľky, a automaticky priradí databázové tabuľky na základe anotácií ako @Table, @Column, @Id, @GeneratedValue (strategy = GenerationType.AUTO) a podobne. Ušetríte veľa práce s tabuľkami.
(Pred začatím projektu musíte najskôr vytvoriť databázu a tabuľka sa automaticky vytvorí)
hibernate_sequence tabuľka je stratégia generovania id @GeneratedValue anotovaná, GenerationType.AUTO predstavuje automatickú generáciu, za predpokladu, že atribút id musí byť int alebo long typ; ak ide o id typu reťazca, pridanie tejto anotácie nad id okamžite nahlási chybu. Preto, ak ide o id typu reťazca, nemusíte id anotovať @GeneratedValue (strategy = GenerationType.AUTO).
Požiadajte o test
Kompletné požiadavky na dáta a ukladanie dát cez get a post.
vyvolaťPrihlásenie na hypertextový odkaz je viditeľné.Rozhranie POST žiada pridanie dát, ako je znázornené na nasledujúcom obrázku:
Databázový dotaz je nasledovný:
Získajte údaje cez nasledujúce rozhranie:
Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné.
Poznámka: Ako požaduje vyššie uvedené rozhranie, Java je veľmi citlivá na citlivosť na veľké písmená, či už ide o URL adresu alebo parametre, musí byť citlivá na veľké písmená! Ak je písmeno veľké alebo malé písmeno, spôsobí to, že požiadavka nedorazí do rozhrania alebo bude parameter prázdny!
Druid monitoruje nasledujúce situácie:
Nakoniec pripojte zdrojový kód:
Turisti, ak chcete vidieť skrytý obsah tohto príspevku, prosím. Odpoveď
(Koniec)
|
Predchádzajúci:Nepodarilo sa mi nakonfigurovať DataSourceBudúci:Popoludňajší čaj Jieyou | Streda, 20. februára 2019
|