- SpringData作用: 致力于减少数据库访问层的开发量,开发者唯一要做的就是声明持久层的接口 ,其他的都交由SpringData JPA 来帮我们完成
- 使用Spring Data JPA进行持久层开发需要的步骤
- 配置Spring 整合JPA
- 在Spring配置文件中配置SpringData,让Spring为声明的接口创建对象代理对象,配置了<jpa:repositories><jpa:repositories/> ,Spring 初始化容器将会扫描base-package 指定的包目录及其子目录,为继承Repository或者其子接口的接口创建代理对象,并将代理对象放入到IOC容器,业务层便可以通过Sping自动封装的特性来直接使用对象。
- 声明持久层接口 该接口继承Repositoty, Repsitory是一个标记接口,他不包含任何的方法;如果想定义其他方法可以继承其子接口定义方法
- 在接口中声明需要的方法。
- 环境的搭建
- 同时下载Spring Data Commons(SpringData 的基础包) 和Spring Data JPA 两个发布包,并加如spring相关Jar ,数据库连接Jar,c3p0等
- 在Spring的配置文件中配置SpringData
base-package: 用于扫描Repository Bean 所在的packge ,会自动的将这些Bean放到IOC容器中<jpa:repositories base-package="com.atgugui.springdata" entity-manager-factory-ref="entityManagerFactory"></jpa:repositories>
- 创建applicationContext.xml文件,创建资源文件用于数据库连接这里为连接MySql (db.properties)
- 整合流程
- 配置数据源
<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>
- 配置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>
- 配置事务管理器
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"><property name="entityManagerFactory" ref="entityManagerFactory"></property></bean>
- 配置支持注解的事务
<tx:annotation-driven transaction-manager="transactionManager"/>
- 配置SpringData
PS: 在配置完一项时 记得进行单元测试<jpa:repositories base-package="com.at.springdata" entity-manager-factory-ref="entityManagerFactory"></jpa:repositories>