总结篇-Spring-data-jpa 框架

来源:互联网 发布:淘宝缩水女的名字 编辑:程序博客网 时间:2024/05/22 12:32

Java持久化规范:

JPA是java实体对象和关系型数据库建立器映射关系,通过面向对象编程思想操作关系型数据库的规范。


1.Spring 框架对JPA的支持

Spring框架对JPA提供的支持主要体现在几个方面:

(1)它是的JPA配置变得更加灵活。JPA规范要求,配置文件必须命名为persistence.xml,并存在与类路径下的META-INF目录中。该文件包含初始化JPA引擎的全部信息。

Spring提供的·LocalContainerEntityManagerFactoryBean类为我们提供了非常灵活的配置,可以让我们自定义配置文件的名称和修改配置文件的位置。

(2)最有意义的,Spring将entityManger(实体管理器)的创建和销毁,事务管理等代码抽取出来,并有Spring统一管理,开发者不需要关系这些,业务方法中只剩下持久层业务逻辑代码。


2.Spring-Data-JPA 框架

Spring-Data-JPA框架,主要针对的就是Spring唯一没有简化到的持久层业务逻辑代码,至此,开发者连仅剩的实现持久层业务逻辑的工作都省了,唯一要做的,就是生命持久层的接口,其他的都交给Spring Data JPA来帮我们完成。


2.1持久层接口继承Repository接口

该接口使用了泛型,需要为其提供两个类型,第一个为该接口处理的域对象类型,第二个为域对象的主键类型

例如·:

  public interface UserRepository extends JpaRepository<User,String>{


}

注: 不需要编写UserRepository的实现类,因为框架会帮我们完成业务逻辑。


3.总结使用Spring Data JPA 进行持久层开发大致需要的几个步骤:

(1)声明持久层的接口,该接口继承Repository,Repository是一个标志性接口,不包含任何方法,Spring Data 提供了若干Repository子接口,不同的接口定义了常用的CRUD方法和分页相关的的方法。

(2)在接口中声明需要的业务方法,Spring Data 会帮我们生成其实现代码。

(3)在Spring配置文件中增加一行声明,让Spring为声明的接口创建代理对象。配置了<jpa:repository>后,Spring初始化容器时会扫描base-package指定的包目录及其子目录,为继承Repository接口的接口创建代理对象,b并将代理对象注册为Spring Bean,业务层便可以通过Spring自动封装的特性来直接使用该对象。


4.Spring-data-jpa的配置文件示例

    <!-- 配置jpaentitymanagerFactory-->    <bean id="entitymanagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">        <property name="persistenceUnitName" value="lab"/>        <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml"/>    </bean>    <!-- 配置jpatransaction事务管理器-->    <bean id="transcationManager" class="org.springframework.orm.jpa.JpaTransactionManager">        <property name="entityManagerFactory" ref="entitymanagerFactory"/>    </bean>    <!-- 启用事务注解器-->    <tx:annotation-driven transaction-manager="transcationManager"/>    <!-- 配置Spring Data JPA 自动扫描目录        把继承了 JpaRepository 接口的interface 实例化为一个Spring bean    -->    <jpa:repositories base-package="com.study.demo.repository"                      entity-manager-factory-ref="entitymanagerFactory"                      transaction-manager-ref="transcationManager"/></beans>

配置文件中逐层引用,从中可以看出Spring-Data-JPA的工作流程,这里就不详细说了。