spring学习笔记整理(四)-----Spring整合Data JPA
Spring整合Data JPA
JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java EE和Java SE应用开发工作;其二,Sun希望整合ORM技术,实现天下归一。
JPA提供一种标准的ORM解决方案,该解决方案完全集成到EJB3.0兼容的容器中。
一、导包
(1) spring-data-jpa
(2) hibernate-entitymanager
<spring-data-jpa.version>1.11.9.RELEASE</spring-data-jpa.version>
<hibernate.version>5.2.12.Final</hibernate.version>
<!-- JPA -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>${spring-data-jpa.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
二、修改配置文件
(1) 把Hibernate sessionFactory 替换为entityManagerFactory
(2) 把Hibernate的TransactionManager 替换为 JpaTransactionManager
(3) 加入JPA头文件配置,并且指定JPA实现的持久层的根目录
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd"> <!-- 1.引入公共配置文件 db.properties--> <context:property-placeholder location="classpath:db.properties"/> <!--2.配置数据源(c3p0)--> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${dataSource.driverClassName}"></property> <property name="jdbcUrl" value="${dataSource.url}"></property> <property name="user" value="${dataSource.username}"></property> <property name="password" value="${dataSource.password}"></property> <property name="maxPoolSize" value="40"></property> <property name="minPoolSize" value="1"></property> <property name="initialPoolSize" value="1"></property> <property name="maxIdleTime" value="20"></property> </bean> <!--3.配置JPA entityManagerFactory--> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="packagesToScan" value="com.demo.entity" /> <!-- 用于指定持久化实现厂商类 --> <property name="persistenceProvider"> <bean class="org.hibernate.jpa.HibernatePersistenceProvider"/> </property> <property name="jpaProperties"> <props> <prop key="hibernate.dialect" >${hibernate.dialect}</prop> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> <prop key="hibernate.max_fetch_depth">2</prop> </property> </bean> <!--4.配置JPA事务管理--> <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> <property name="entityManagerFactory" ref="entityManagerFactory"/> </bean> <!--5.注解事务 :transaction-manager="transactionManager" proxy-target-class="true" --> <tx:annotation-driven /> <!--6.指定JPA实现的持久层的根目录 entity-manager-factory-ref:默认获取id=entityManagerFactory Bean transaction-manager-ref:默认获取id=transactionManager Bean --> <jpa:repositories base-package="com.demo.dao" /> </beans>
三、继承接口
Repository
CrudRepository extends Repository
PagingAndSortingRepository extends CrudRepository
JpaRepository extends PagingAndSortingRepository
public interface UserRepository extends CrudRepository<User,Long> { }
浙公网安备 33010602011771号