EJB之JPA

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

一、是什么?

第一次听说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包。下图显示了它们之间的关系。

(1)EntityManagerFactory
和 EntityManager
的关系是1对多。

这是一个工厂类 EntityManager
实例。

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

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

(5)EntityManager
实体之间的关系是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技术。至于它的实现就在我们的实践中慢慢体会吧!

时间: 2024-11-08 10:14:21

EJB之JPA的相关文章

JPA初体验

JAVA领域中,持久化是企业开发中必不可少的技术.Java领域中曾涌现出几种试图解决数据持久化问题的几种方案.例如:序列化(Serialization).JDBC.对象关系映射(ORM).EJB2.X和最新的JPA等. 1.序列化 java内置的持久化Java对象的机制.只要某个类实现了java.io.Serializable接口,就能使用java.io.objectOutputStream将该类对象以二进制字节码的形式写到硬盘上. 简单的应用可以使用序列化对java对象的持久化,一般序列化的对

JPA(一):初步了解

说到JPA,大家可能没有Hibernate听起来那么熟悉,那我就通过一张图让大家了解一下,什么是JPA.下图是JPA在系统架构中的作用: 由以上图片我们可以得出两个结论:首先JPA的主要作用就是持久化操作:其次JPA只是一种规范,它需要一种实现,正如上图显示的,Hibernate.oPenJPA等等.简单些,可以说JPA只是一套接口,本身不能完成任何事情. 知道什么是JPA之后,我们就要说一说我们为什么倾向于使用JPA了.它的优势主要有以下三点: (1)可持久化Java对象. JPA能够直接持久

Eclipse + Jboss AS 7.1 创建 EJB3.0之JPA工程

0. EJB3.0 与 JPA 0 1. 环境预备 1 2. 配置开发环境 2 3. 工程描述 3 4. 步骤 4 5. 在MySQL中创建数据库表 5 6. 新建 EJB Project 6 7. 创建JPA实体 7 Eclipse + Jboss AS 7.1 创建 EJB3.0之JPA工程 0. EJB3.0 与 JPA EJB3.0是一份规范,该规范由不同的部分组成: 第一部分为session bean和message-driven bean定义了新的编程模型,以及部署规则等等: 第二部

Spring组件扫描<context:component-scan/>详解

最近使用Spring,发现有很多依赖注入的内容,特别是DAO,百思不得其解,后来才知道是Spring的依赖注入.Spring可以批量将一个目录下所有的植入@Repository 注解或者@Service 注解的组件类一次性扫描出来. 事例 <?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans&quo

java必看书籍

Java核心技术 卷1 基础知识(第9版)Java核心技术 卷II 高级特性(第9版) 数据库系统概念(原书第6版)Oracle 从入门到精通MySQL数据库应用从入门到精通 Java并发编程实战(第16届Jolt大奖提名图书,Java并发编程必读佳作) Java网络编程(第3版)——O’Reilly Java系列 数据结构与算法分析Java语言描述 第2版深入理解Java虚拟机:JVM高级特性与最佳实践(第2版) Java程序性能优化——让你的Java程序更快.更稳定Java加密与解密的艺术(

2017最全的Java大致学习方向

一.Java SE部分  1.java基础:基础语法:面向对象(重点):集合框架(重点):常见类库API:       2.java界面编程:AWT:事件机制:Swing:       3.java高级知识:Annotation:IO和NIO.AIO:多线程.线程池:阻塞.非阻塞.异步网络通信:反射.动态代理: 二.JDBC编程  4.SQL基础:基础SQL语句:基本查询:多表查询:子查询:结果集的交.并.差运算:      5.JDBC基础:常见数据库用法:JDBC操作常见数据库:RowSet

@Component @Repository @Service @Controller

Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository.@Service 和 @Controller.在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层.业务层和控制层(Web 层)相对应.虽然目前这3 个注释和 @Component 相比没有什么新意,但 Spring 将在以后的版本中为它们添加特殊的功能.所以,如果 Web 应用

Springd的注解

Spring常见的注解:@Component.@Repository.@Service.@Controller @Resource.@Autowired.@Qualifier  通过看一些项目代码,我发现@Repository.@Service.@Controller 这几个是一个类型,其实@Component 跟他们也是一个类型的. Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository.@Service和 @Cont

spring扫描方式如何获得bean

component-scan标签默认情况下自动扫描指定路径下的包(含所有子包),将带有@Component.@Repository.@Service.@Controller标签的类自动注册到spring容器.对标记了 Spring's @Required.@Autowired.JSR250's @PostConstruct.@PreDestroy.@Resource.JAX-WS's @WebServiceRef.EJB3's @EJB.JPA's @PersistenceContext.@Pe