Spring 與SpringData的整合

  • SpringData作用: 致力於減少數據庫訪問層的開發量,開發者唯一要做的就是聲明持久層的接口 ,其他的都交由SpringData JPA 來幫我們完成
  • 使用Spring Data JPA進行持久層開發需要的步驟
  1. 配置Spring 整合JPA
  2. 在Spring配置文件中配置SpringData,讓Spring爲聲明的接口創建對象代理對象,配置了<jpa:repositories><jpa:repositories/> ,Spring 初始化容器將會掃描base-package 指定的包目錄及其子目錄,爲繼承Repository或者其子接口的接口創建代理對象,並將代理對象放入到IOC容器,業務層便可以通過Sping自動封裝的特性來直接使用對象。
  3. 聲明持久層接口  該接口繼承Repositoty, Repsitory是一個標記接口,他不包含任何的方法;如果想定義其他方法可以繼承其子接口定義方法
  4. 在接口中聲明需要的方法。
  • 環境的搭建

  1. 同時下載Spring Data Commons(SpringData 的基礎包) 和Spring Data JPA 兩個發佈包,並加如spring相關Jar ,數據庫連接Jar,c3p0等
  2. 在Spring的配置文件中配置SpringData
    <jpa:repositories base-package="com.atgugui.springdata"
    	entity-manager-factory-ref="entityManagerFactory"></jpa:repositories>
    base-package: 用於掃描Repository Bean 所在的packge ,會自動的將這些Bean放到IOC容器中
  3.  創建applicationContext.xml文件,創建資源文件用於數據庫連接這裏爲連接MySql (db.properties)
  • 整合流程
  1. 配置數據源
    <context:property-placeholder location="classpath:db.properties" />
    	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    		<property name="user" value="${jdbc.user}"></property>
    		<property name="password" value="${jdbc.password}"></property>
    		<property name="driverClass" value="${jdbc.diverClass}"></property>
    		<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
    	</bean>
  2. 配置JPA的EntityManagerFactory
    <bean id="entityManagerFactory" 
    		class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    		<property name="dataSource" ref="dataSource"></property>
    		<property name="jpaVendorAdapter">
    			<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"></bean>
    		</property>
    		<property name="packagesToScan" value="com.at.springdata"></property>
    		<property name="jpaProperties">
    			<props>
    				<!-- 二級緩存相關 -->
    				<!--  
    				<prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>
    				<prop key="net.sf.ehcache.configurationResourceName">ehcache-hibernate.xml</prop>
    				-->
    				<!-- 生成的數據表的列的映射策略 -->
    				<prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop>
    				<!-- hibernate 基本屬性 -->
    				<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
    				<prop key="hibernate.show_sql">true</prop>
    				<prop key="hibernate.format_sql">true</prop>
    				<prop key="hibernate.hbm2ddl.auto">update</prop>
    			</props>
    		</property>
    	</bean>


  3.  配置事務管理器
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"><property name="entityManagerFactory" ref="entityManagerFactory"></property></bean>
  4. 配置支持註解的事務
     <tx:annotation-driven  transaction-manager="transactionManager"/>
     	 
  5.  配置SpringData
    <jpa:repositories base-package="com.at.springdata"
    	entity-manager-factory-ref="entityManagerFactory"></jpa:repositories>
    PS: 在配置完一項時 記得進行單元測試  

發佈了20 篇原創文章 · 獲贊 1 · 訪問量 7933
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章