1. 程式人生 > >Spring Data JPA applicationContext.xml的配置檔案

Spring Data JPA applicationContext.xml的配置檔案

Spring Data JPA的概述

  1. 概述:是Dao層的解決方案,出現的目的是簡化JPA的開發。

  2. 想使用JPA的話,需要新增座標依賴,專案中已經引入了。

     <dependency>
     	<groupId>org.springframework.data</groupId>
     	<artifactId>spring-data-jpa</artifactId>
     	<version>1.9.0.RELEASE</version>
     </dependency>
    
    1. applicationContext.xml的配置檔案,檢視JPA相關的配置

       <!-- 1.dataSource-->
       <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
       	<property name="driverClass" value="oracle.jdbc.driver.OracleDriver" />
       	<property name="jdbcUrl" value="jdbc:oracle:thin:@192.168.198.130:1521:orcl" />
       	<property name="user" value="itcast297" />
       	<property name="password" value="itcast297" />
       </bean>
       Spring JPA 配置
       <bean id="entityManagerFactory"
       	class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
       	引人c3p0資料來源
       	<property name="dataSource" ref="dataSource" />
       	掃描cn.itcast.domain 下所有的實體類
       	<property name="packagesToScan" value="cn.itcast.domain" />
       	提供者 是指使用什麼框架
       	<property name="persistenceProvider">
       		<bean class="org.hibernate.jpa.HibernatePersistenceProvider" />
       	</property>
       	<!--JPA的供應商介面卡-->
       	<property name="jpaVendorAdapter">
       		配置資料庫、資料庫的方言 需要配置一些東西  
       		<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
       			根據實體類是否生成表   false不需要 true需要
       			<property name="generateDdl" value="false" />
       			指定使用什麼資料庫
       			<property name="database" value="ORACLE" />
       			資料庫的方言
       			<property name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect" />
       			是否中控制檯列印sql語句
       			<property name="showSql" value="true" />
       		</bean>
       	</property>
       	提供者的方言
       	<property name="jpaDialect">
       		<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
       	</property>
       	<property name="jpaPropertyMap">
       		<map>
       			<entry key="hibernate.query.substitutions" value="true 1, false 0" />
       			<entry key="hibernate.default_batch_fetch_size" value="16" />
       			<entry key="hibernate.max_fetch_depth" value="2" />
       			<entry key="hibernate.enable_lazy_load_no_trans" value="true"></entry>
       			<entry key="hibernate.generate_statistics" value="true" />
       			<entry key="hibernate.bytecode.use_reflection_optimizer"
       				value="true" />
       			<entry key="hibernate.cache.use_second_level_cache" value="false" />
       			<entry key="hibernate.cache.use_query_cache" value="false" />
       		</map>
       	</property>
       </bean>
       
       <!-- JdbcTemplate配置 -->
       <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="dataSource"></property>
       </bean>
       
       <!-- 告訴spring生成shiro代理子類時,採用cglib方式生成 -->
       <aop:aspectj-autoproxy proxy-target-class="true" />
       
       <!-- 3.事務管理器-->
       <!-- JPA事務管理器  -->
       <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
       	<property name="entityManagerFactory" ref="entityManagerFactory" />
       </bean>
       
       	<!-- 整合spring data jpa  :只對dao介面 方法增強   -->
       <jpa:repositories base-package="cn.itcast.dao"
       	transaction-manager-ref="transactionManager"
       	entity-manager-factory-ref="entityManagerFactory"></jpa:repositories>
      
       <!-- 4.txAdvice-->
       <tx:advice id="txAdvice" transaction-manager="transactionManager">
       	<tx:attributes>
       		<tx:method name="save*" propagation="REQUIRED"/>
       		<tx:method name="insert*" propagation="REQUIRED"/>
       		<tx:method name="update*" propagation="REQUIRED"/>
       		<tx:method name="delete*" propagation="REQUIRED"/>
       		
       		<tx:method name="get*" read-only="true"/>
       		<tx:method name="find*" read-only="true"/>
       		<tx:method name="*" propagation="REQUIRED"/>
       	</tx:attributes>
       </tx:advice>
       
       <!-- 5.aop-->
       <aop:config>
       	<aop:pointcut id="pointcut" expression="execution(* cn.itcast.service.*.*(..))" />
       	<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut" />
       </aop:config>
       
       <context:component-scan base-package="cn.itcast"></context:component-scan>
      

編寫DeptDao介面及其實現類**

1. 建立DeptDao的介面,繼承JpaRepository<Dept, String>,JpaSpecificationExecutor<Dept>介面即可,增刪改查所有的方法全部都提供了,不用編寫實現類。
2. 程式碼如下:
	public interface DeptDao extends JpaRepository<Dept, String>,JpaSpecificationExecutor<Dept>