• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
风吹花落泪如雨
博客园    首页    新随笔    联系   管理    订阅  订阅

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>
{

}

 

posted @ 2018-03-16 17:20  风吹花落泪如雨  阅读(122)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3