- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
spring Data jpa简介
spring Data jpa 简介
前言
自 JPA 伴随 Java EE 5 发布以来,受到了各大厂商及开源社区的追捧,各种商用的和开源的 JPA 框架如雨后春笋般
出现,为开发者提供了丰富的选择。它一改之前 EJB 2.x 中实体 Bean 笨重且难以使用的形象,充分吸收了在开源社区已经
相对成熟的 ORM 思想。另外,它并不依赖于 EJB 容器,可以作为一个独立的持久层技术而存在。目前比较成熟的 JPA 框
架主要包括 Jboss 的 Hibernate EntityManager、Oracle 捐献给 Eclipse 社区的 EclipseLink、Apache 的 OpenJPA
等。
Java 持久化规范,是从 EJB2.x 以前的实体 Bean(Entity bean)分离出来的,EJB3 以后不再有实体 bean ,而是将实体
bean 放到 JPA 中实现。JPA 是 sun 提出的一个对象持久化规范,各 JavaEE 应用服务器自主选择具体实现,JPA 的设计者是
Hibernate 框架的作者,因此 Hibernate 作为 Jboss 服务器中 JPA 的默认实现,Oracle 的 Weblogic 使用 EclipseLink(以
前叫 TopLink)作为默认的 JPA 实现,IBM 的 Websphere 和 Sun 的 Glassfish 默认使用 OpenJPA(Apache 的一个开源项目)
作为其默认的 JPA 实现。
JPA 的底层实现是一些流行的开源 ORM(对象关系映射)框架,因此 JPA 其实也就是 java 实体对象和关系型数据库建立
起映射关系,通过面向对象编程的思想操作关系型数据库的规范。
Spring 框架对 JPA 的支持
Spring 框架对 JPA 提供的支持主要体现在如下几个方面:
首先,它使得 JPA 配置变得更加灵活。JPA 规范要求,配置文件必须命名为 persistence.xml ,并存在于类路径
下的 META-INF 目录中。该文件通常包含了初始化 JPA 引擎所需的全部信息。Spring 提供的
LocalContainerEntityManagerFactoryBean 提供了非常灵活的配置,persistence.xml 中的信息都可以在此以属性注
入的方式提供。
其次,Spring 实现了部分在 EJB 容器环境下才具有的功能,比如对 @PersistenceContext、@PersistenceUnit
的容器注入支持。
第三,也是最具意义的,Spring 将 EntityManager 的创建与销毁、事务管理等代码抽取出来,并由其统一管理,
开发者不需要关心这些,业务方法中只剩下操作领域对象的代码,事务管理和 EntityManager 创建、销毁的代码都不
再需要开发者关心了。
Spring Data JPA 更简洁
Spring Data JPA 框架,主要针对的就是 Spring 唯一没有简化到的业务逻辑代码,至此,开发者连仅剩的实现持久层业务
逻辑的工作都省了,唯一要做的,就只是声明持久层的接口,其他都交给 Spring Data JPA 来帮你完成!
下面就来了解 Spring Data JPA。
1.下载需要的包。
需要先 下载 Spring Data JPA 的发布包(需要同时下载 Spring Data Commons 和 Spring Data JPA 两个发布包,
Commons 是 Spring Data 的公共基础包),并把相关的依赖 JAR 文件加入到 CLASSPATH 中。
2.让持久层接口 Dao (以UserDao ) 继承 Repository 接口。
该接口使用了泛型,需要为其提供两个类型:第一个为该接口处理的域对象类型,第二个为该域对象的主键类型。 如下:
Spring Data JPA 风格的持久层接口:
1 / 5
public interface UserDao extends RepositoryAccountInfo, Long {
public AccountInfo save(AccountInfo accountInfo);
文档评论(0)