Spring Data JPA的概述
-
概述:是Dao层的解决方案,出现的目的是简化JPA的开发。
-
想使用JPA的话,需要添加坐标依赖,项目中已经引入了。
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>1.9.0.RELEASE</version> </dependency>
-
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>