EJB之JPA

Posted claireyuancy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EJB之JPA相关的知识,希望对你有一定的参考价值。

         在前一篇文章中大概了解了EJB是什么?那么接下来就进一步介绍一下它与JPA有什么样的关系?及什么是JPAJPA怎样用?

一、是什么?

         第一次听说JPA是在EJB视屏中,所以一直感觉他们有不解的渊源。可是经过这一段时间学习和总结发现JPA的作用远远不局限于此。

         JPA是这样定义的:JPA(Java Persistence API)是Sun官方提出的Java持久化规范。为Java开发者提供了一种对象/关系映射工具来管理Java应用中的关系数据。它的出现主要是为了简化现有的持久化开发工作和整合ORM技术。

    那么在这里就简单罗列一下简单的知识点:

    ORM映射元数据

    Java持久化API

    查询语言

         注意:JPA本身不是一个新的产品,而是Java编程中的规范,用语规范现有的ORM技术,它不能代替现有的Hibernate、Toplink等ORM框架。相反。在採用JPA开发时,我们仍将使用到这些ORM框架,仅仅是此时开发出来的应用不再依赖于某个持久化提供商。

应用能够在不改动代码的情况下在不论什么JPA环境下执行。真正做到低耦合、可扩展的程序设计。

二、总体架构?

         下图展示了JPA核心类和JPA接口

技术分享

三、与EJB的关系

         因为历史的原因,EJB 3与JPA有着藕断丝连的关系。

EJB 2.X中,EJB有三种类型的Bean,各自是会话Bean(SessionBean)、实体Bean(Entity Bean)和消息驱动Bean(Message Driven Bean)。

        随着EJB3规范的推出,EJB中的实体Bean(EnityBean)逐渐被JPA规范所替代,这也是为什么JPA的规范会包括在EJB3的规范中的原因

       JPA不仅可以在EJB环境中使用,也可以在J2SE的环境中使用,相对于EJB2.X的实体BEAN,使用的范围更广

       总之,简单的说,JPA尽管出自EJB3,可是其使用的范围却大于EJB3,不仅能够在JavaEE5中,也能够在JavaSE的环境中,如图所看到的EJB3和JPA的关系

如图:

 技术分享

类或接口                                              描写叙述

EntityManagerFactory     这是一个 EntityManager 的工厂类。它创建并管理多个 EntityManager 实例。

EntityManager                       这是一个接口,它管理的持久化操作的对象。它的工作原理类似工厂的查询实例。

Entity                                      实体是持久性对象是存储在数据库中的记录。

EntityTransaction        它与 EntityManager 是一对一的关系。对于每个 EntityManager 。操作是由 EntityTransaction              类维护。

Persistence                       这个类包括静态方法来获取 EntityManagerFactory 实例。

Query                                     该接口由每一个 JPA 供应商,可以获得符合标准的关系对象。

          在上述体系结构中,类和接口之间的关系属于javax.persistence包。下图显示了它们之间的关系。

 技术分享

1EntityManagerFactory EntityManager 的关系是1对多。

这是一个工厂类 EntityManager 实例。

2EntityManager EntityTransaction 之间的关系是11。对于每一个EntityManager 操作。仅仅有一个 ()(3EntityTransaction 实例。

4EntityManager Query 之间的关系是1对多。查询数众多能够使用一个 EntityManager 实例运行。

5EntityManager 实体之间的关系是1对多。

一个EntityManager 实例能够管理多个实体。

四、优势

        其实,JPA并非一项技术,而是一种标准。由于JPA仅仅是一套接口。本身不能完毕不论什么事情。

JPA仅仅是规范了Java持久化的官方标准。

JPA有下面几个长处。

    可持久化Java对象。

JPA可以直接持久化复杂的Java对象,并可以使用JPQL语言进行复杂的查询。

JPQL是JPA专用的查询语言,是类似于SQL的面向对象的查询语言。

    使用简单。

JPA使用凝视(Annotation)定义Java对象与关系数据库之间的映射,而传统的ORM多使用xml配置文件。JPA使用起来比ORM要方便。使用JPA不用关注底层使用什么数据库。

    规范标准化。

JPA是JCP组织公布的,是Java官方规定的统一的API。眼下已经有多种框架实现JPA标准。使用了JPA的系统可以自由选择遵循JPA标准的框架,并可以自由更换。

    事务性、大数据量。JPA底层使用关系数据库进行存储。因此具备关系数据库的特点,比如事务性、数据完整性、并发訪问、大数据量等。

    与其它持久化技术相比。JPA有非常大的技术优势。

表列出了JPA与其它持久化技术的比較。

五、总结

         通过对JPA的简介,让我来概括一下吧!

JPA就是一个java持久化规范。它简化了现有的持久化工作和整合ORM技术。至于它的实现就在我们的实践中慢慢体会吧!


以上是关于EJB之JPA的主要内容,如果未能解决你的问题,请参考以下文章

@Stateless和@Asynchronous EJB之间的JPA事务处理

JPA 和 EJB 以及分离的 DAO 和服务层

使用 EJB + JPA + Jersey 进行延迟加载

带有 JPA/EJB 代码的“分离实体传递给持久错误”

使用 JPA2 时如何对 EJB 进行单元测试?

使用 JPA2 时如何对 EJB 进行单元测试?