Sprievodca JPA s jarou

1. Prehľad

Tento návod ukazuje, ako nastaviť jar s JPA, ktorý používa Hibernate ako poskytovateľa perzistencie.

Podrobný úvod o nastavení jarného kontextu pomocou konfigurácie založenej na prostredí Java a základnej pomôcky Maven pre projekt nájdete v tomto článku.

Začneme nastavením JPA v projekte Spring Boot, potom sa pozrieme na úplnú konfiguráciu, ktorú potrebujeme, ak máme štandardný projekt Spring.

Tu je video o nastavení režimu dlhodobého spánku 4 s jarom 4 (odporúčam pozrieť si ho v plnom rozlíšení 1080p):

2. JPA v jarnom bootovaní

Cieľom projektu Spring Boot je uľahčiť a zjednodušiť vytváranie aplikácií Spring. To sa deje pomocou štartérov a automatickej konfigurácie pre rôzne jarné funkcie, medzi nimi aj JPA.

2.1. Maven závislosti

Na povolenie JPA v aplikácii Spring Boot potrebujeme štartér s pružinou a spring-boot-starter-data-jpa závislosti:

 org.springframework.boot spring-boot-starter 2.2.6.RELEASE org.springframework.boot spring-boot-starter-data-jpa 2.2.6.RELEASE 

The štartér s pružinou obsahuje potrebnú automatickú konfiguráciu pre jarné JPA. Tiež spring-boot-starter-jpa odkazy na projekt všetky potrebné závislosti ako napr hibernácia-jadro.

2.2. Konfigurácia

Konfigurácia Spring Boot Hibernácia ako predvolený poskytovateľ JPA, takže už nie je potrebné definovať entityManagerFactory fazuľa, pokiaľ to nechceme prispôsobiť.

Spring Boot môže tiež automaticky nakonfigurovať dátový zdroj fazuľa, v závislosti od databázy, ktorú používame. V prípade pamäťovej databázy typu H2, HSQLDB, a Apache Derby, Boot automaticky nakonfiguruje Dátový zdroj ak je na triednej ceste prítomná zodpovedajúca závislosť databázy.

Napríklad, ak chceme použiť pamäť H2 databázy v aplikácii Spring Boot JPA, stačí pridať h2 závislosť od pom.xml spis:

 com.h2database h2 1.4.200 

Týmto spôsobom nemusíme definovať dátový zdroj fazuľa, ale môžeme tak urobiť, ak si ju chceme prispôsobiť.

Ak chceme použiť JPA s MySQL databázy, potom potrebujeme mysql-konektor-java závislosť, ako aj definovať Dátový zdroj konfigurácia.

Môžeme to urobiť v a @ Konfigurácia triedy alebo pomocou štandardných vlastností Spring Boot.

Konfigurácia Java vyzerá rovnako ako v štandardnom jarnom projekte:

@Bean public DataSource dataSource () {DriverManagerDataSource dataSource = nový DriverManagerDataSource (); dataSource.setDriverClassName ("com.mysql.cj.jdbc.Driver"); dataSource.setUsername ("mysqluser"); dataSource.setPassword ("mysqlpass"); dataSource.setUrl ("jdbc: mysql: // localhost: 3306 / myDb? createDatabaseIfNotExist = true"); vrátiť dátový zdroj; }

Ak chcete nakonfigurovať zdroj údajov pomocou súboru vlastností, musíme nastaviť vlastnosti s predponou jarný zdroj:

spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver spring.datasource.username = mysqluser spring.datasource.password = mysqlpass spring.datasource.url = jdbc: mysql: // localhost: 3306 / myDb ? createDatabaseIfNotExist = true

Spring Boot na základe týchto vlastností automaticky nakonfiguruje zdroj údajov.

Aj v Spring Boot 1 bol predvolený fond pripojení Tomcat, ale s Spring Boot 2 sa zmenilo na HikariCP.

Viac príkladov konfigurácie JPA v Spring Boot nájdete v projekte GitHub.

Ako vidíme, základná konfigurácia JPA je pomerne jednoduchá, ak používame Spring Boot.

Avšak ak máme štandardný jarný projekt, potom potrebujeme explicitnejšiu konfiguráciu pomocou Java alebo XML. Na to sa zameriame v ďalších častiach.

3. Konfigurácia JPA Spring s Javou - v projekte bez spustenia

Ak chcete použiť JPA v jarnom projekte, musíme nastaviť EntityManager.

Toto je hlavná časť konfigurácie a môžeme to urobiť cez Spring factory bean. Môže to byť buď jednoduchšie LocalEntityManagerFactoryBean alebo tým pružnejšie LocalContainerEntityManagerFactoryBean.

Pozrime sa, ako môžeme použiť druhú možnosť:

@Configuration @EnableTransactionManagement verejná trieda PersistenceJPAConfig {@Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory () {LocalContainerEntityManagerFactoryBean em = nový LocalContainerEntityManagerFactoryBean (); em.setDataSource (dataSource ()); em.setPackagesToScan (nový reťazec [] {"com.baeldung.persistence.model"}); JpaVendorAdapter vendorAdapter = nový HibernateJpaVendorAdapter (); em.setJpaVendorAdapter (vendorAdapter); em.setJpaProperties (additionalProperties ()); vrátiť em; } // ...}

Musíme tiež výslovne definovať Dátový zdroj fazuľa sme použili vyššie:

@Bean public DataSource dataSource () {DriverManagerDataSource dataSource = nový DriverManagerDataSource (); dataSource.setDriverClassName ("com.mysql.cj.jdbc.Driver"); dataSource.setUrl ("jdbc: mysql: // localhost: 3306 / spring_jpa"); dataSource.setUsername ("tutorialuser"); dataSource.setPassword ("tutorialmy5ql"); vrátiť dátový zdroj; }

Poslednou časťou konfigurácie sú ďalšie vlastnosti dlhodobého spánku a TransactionManager a výnimkaPreklad fazuľa:

@Bean public PlatformTransactionManager transactionManager () {JpaTransactionManager transactionManager = nový JpaTransactionManager (); transactionManager.setEntityManagerFactory (entityManagerFactory (). getObject ()); return transactionManager; } @Bean public PersistenceExceptionTranslationPostProcessor exceptionTranslation () {vrátiť nový PersistenceExceptionTranslationPostProcessor (); } Vlastnosti additionalProperties () {Vlastnosti vlastnosti = nové Vlastnosti (); properties.setProperty ("hibernate.hbm2ddl.auto", "create-drop"); properties.setProperty ("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect"); návratové vlastnosti; }

4. Konfigurácia pružiny JPA pomocou XML

Ďalej sa pozrieme na rovnakú jarnú konfiguráciu s XML:

        create-drop org.hibernate.dialect.MySQL5Dialect 

Medzi XML a novou konfiguráciou založenou na prostredí Java je relatívne malý rozdiel. Konkrétne v XML môže odkaz na inú fazuľu smerovať buď na fazuľu, alebo na továreň na fazule pre túto fazuľu.

Pretože v Jave sú rôzne typy, kompilátor to v Jave neumožňuje, a tak EntityManagerFactory sa najskôr získa z továrne na výrobu fazúľ a potom sa odovzdá správcovi transakcií:

transactionManager.setEntityManagerFactory (entityManagerFactory (). getObject ());

5. Plná implementácia bez XML

Zvyčajne JPA definuje jednotku perzistencie prostredníctvom META-INF / persistence.xml spis. Počnúc jarom 3.1 persistence.xml už nie je potrebné. The LocalContainerEntityManagerFactoryBean teraz podporuje a packagesToScan vlastnosť, kde sa majú vyhľadávať balíky @Entity triedy je možné určiť.

Tento súbor bol poslednou časťou XML, ktorú musíme odstrániť. Teraz môžeme nastaviť JPA úplne bez XML.

Spravidla by sme špecifikovali vlastnosti JPA v persistence.xml spis. Prípadne môžeme pridať vlastnosti priamo do objektu bean entity manager:

factoryBean.setJpaProperties (this.additionalProperties ());

Ako vedľajšiu poznámku, ak by bol Hibernate poskytovateľom perzistencie, potom by to bol spôsob, ako špecifikovať aj špecifické vlastnosti Hibernate.

6. Konfigurácia Maven

Okrem závislostí Spring Core a persistence - podrobne zobraziť v tutoriáli Spring with Maven - musíme v projekte definovať aj JPA a Hibernate, ako aj konektor MySQL:

 org.hibernate hibernate-core 5.2.17.Final runtime mysql mysql-connector-java 8.0.19 runtime 

Upozorňujeme, že ako príklad je tu zahrnutá závislosť MySQL. Potrebujeme ovládač na konfiguráciu zdroja údajov, ale bude to stačiť v akejkoľvek databáze podporovanej režimom dlhodobého spánku.

7. Záver

Tento návod ilustroval, ako konfigurovať JPA s režimom dlhodobého spánku na jar v Spring Boot aj v štandardnej aplikácii Spring.

Ako vždy, kód uvedený v tomto článku je k dispozícii na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found