zoukankan      html  css  js  c++  java
  • 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技术。至于它的实现就在我们的实践中慢慢体会吧!

  • 相关阅读:
    vs2010 setup 打包 安装 BAT批处理实现自动安装软件功能
    为什么我上传了flv或MP4文件到服务器,可输入正确地址通过http协议来访问总是出现“无法找到该页”的404错误呢
    异步编程:(TAP)基于任务的异步编程模型详解
    异步编程:IAsyncResult异步编程模型 (APM)
    WCF:调用方未由服务器进行身份验证
    django 操作数据库--orm(object relation mapping)---models
    python操作memcached以及分布式
    网络干货,无论是运维还是开发都要知道的网络知识系列之(七)
    一次完整的HTTP事务是怎样一个过程?
    网络干货,无论是运维还是开发都要知道的网络知识系列之(六)
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/6852069.html
Copyright © 2011-2022 走看看