日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring 3.1和JPA的持久层

發布時間:2023/12/3 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring 3.1和JPA的持久层 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.概述

本教程顯示了如何使用Hibernate作為持久性提供程序使用JPA設置Spring

有關使用基于Java的配置和項目的基本Maven pom設置Spring上下文的分步介紹,請參閱本文 。

2. Java的JPA Spring配置

要在Spring項目中使用JPA, 需要設置EntityManager

這是配置的主要部分,它是通過Spring工廠bean完成的,即更簡單的LocalEntityManagerFactoryBean或更靈活的LocalContainerEntityManagerFactoryBean 。 此處使用后一個選項,以便可以在其上配置其他屬性:

@Configuration @EnableTransactionManagement public class PersistenceJPAConfig{@Beanpublic LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() {LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();em.setDataSource(dataSource());em.setPackagesToScan(new String[] { "org.baeldung.persistence.model" });JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();em.setJpaVendorAdapter(vendorAdapter);em.setJpaProperties(additionalProperties());return em;}@Beanpublic DataSource dataSource(){DriverManagerDataSource dataSource = new DriverManagerDataSource();dataSource.setDriverClassName("com.mysql.jdbc.Driver");dataSource.setUrl("jdbc:mysql://localhost:3306/spring_jpa");dataSource.setUsername( "tutorialuser" );dataSource.setPassword( "tutorialmy5ql" );return dataSource;}@Beanpublic PlatformTransactionManager transactionManager(){JpaTransactionManager transactionManager = new JpaTransactionManager();transactionManager.setEntityManagerFactory(entityManagerFactoryBean().getObject() );return transactionManager;}@Beanpublic PersistenceExceptionTranslationPostProcessor exceptionTranslation(){return new PersistenceExceptionTranslationPostProcessor();}Properties additionalProperties() {return new Properties() {{ // Hibernate Specific: setProperty("hibernate.hbm2ddl.auto", "create-drop");setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL5Dialect");}};} }

另外,請注意,在Spring 3.2之前, cglib必須位于類路徑中才能使Java @Configuration類起作用。 為了更好地理解cglib作為依賴項的需求,請參閱Spring中有關cglib工件的討論 。

3.使用XML的JPA Spring配置

與XML相同的Spring配置:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"><bean id="myEmf" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"><property name="dataSource" ref="dataSource" /><property name="packagesToScan" value="org.baeldung.persistence.model" /><property name="jpaVendorAdapter"><bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" /></property><property name="jpaProperties"><props><prop key="hibernate.hbm2ddl.auto">create-drop</prop><prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop></props></property></bean><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/spring_jpa" /><property name="username" value="tutorialuser" /><property name="password" value="tutorialmy5ql" /></bean><bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"><property name="entityManagerFactory" ref="myEmf" /></bean><tx:annotation-driven /><bean id="persistenceExceptionTranslationPostProcessor" class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" /></beans>

在XML中配置Spring和基于Java的新配置之間有一個相對小的差異–在XML中,對另一個bean的引用可以指向該bean或該bean的bean工廠。 但是在Java中,由于類型不同,編譯器不允許這樣做,因此首先從Bean工廠中檢索EntityManagerFactory ,然后將其傳遞給事務管理器:

txManager.setEntityManagerFactory( this.entityManagerFactoryBean()。getObject() );

4.完全不用XML

通常,JPA通過META-INF / persistence.xml文件定義一個持久性單元。 從Spring 3.1開始,不再需要persistence.xml - LocalContainerEntityManagerFactoryBean現在支持'packagesToScan'屬性,可以在其中指定要掃描@Entity類的軟件包。

該文件是最后要刪除的XML片段–現在, 無需使用XML即可完全??設置JPA。

4.1。 JPA屬性

JPA屬性通常在persistence.xml文件中指定; 或者,可以將屬性直接指定給實體管理器工廠bean:

factoryBean.setJpaProperties(this.additionalProperties());

附帶說明一下,如果Hibernate將是持久性提供程序,則這將是指定Hibernate特定屬性的方式。

5. Maven配置

除了Spring Core和持久性依賴關系(在Spring with Maven教程中詳細顯示)之外,我們還需要在項目中定義JPA和Hibernate,以及MySQL連接器 :

<dependency><groupId>org.hibernate</groupId><artifactId>hibernate-entitymanager</artifactId><version>4.2.4.Final</version><scope>runtime</scope> </dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.26</version><scope>runtime</scope> </dependency>

請注意,MySQL依賴項作為參考包括在內-需要驅動程序來配置數據源,但是任何受Hibernate支持的數據庫都可以。

六,結論

本教程說明了如何使用XML和Java配置在Spring中使用Hibernate配置JPA

我們還討論了如何擺脫通常與JPA相關聯的XML的最后一部分– persistence.xml 。 最終結果是一個輕量級的,干凈的DAO實現,幾乎沒有依賴Spring的編譯時。

可以在github項目中找到此Spring JPA教程的實現–這是一個基于Eclipse的項目,因此應該很容易直接導入和運行。

參考: Baeldung博客中的Spring 3和JPA與Hibernate的 合作,來自我們的JCG合作伙伴 Eugen Paraschiv。

翻譯自: https://www.javacodegeeks.com/2011/12/persistence-layer-with-spring-31-and_14.html

總結

以上是生活随笔為你收集整理的Spring 3.1和JPA的持久层的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。