EJB3 Persistence API标准化持久性

持久性对于大多数企业应用程序都非常关键,因为它们需要访问关系数据库(例如Oracle Database 10g)。如果您正在使用Java开发应用程序,您可能需要完成一些常规任务(例如数据库更新和检索),这是通过编写JDBC和SQL来完成的。最近几年,几种对象关系(O-R)映射框架(例如Oracle TopLink、JBoss Hibernate和BEA Kodo)开始流行,因为它们简化了持久性问题,将Java开发人员从编写JDBC代码的工作中解放出来,从而使他们能够将精力集中于业务逻辑。一些Java标准(例如EJB 2.x容器管理持久性(CMP)实体bean)也试图解决持久性挑战,但是不那么成功。

虽然存在多种构建应用程序持久层的选择,但是还没有一种面向Java平台的、在Java EE和Java SE环境下均可使用的持久性标准。好消息是EJB3 Java Persistence API (JPA)(它是EJB 3.0规范JSR-220的一部分)的出现,它标准化了面向Java平台的持久性API。JSR-220为O-R映射供应商(例如TopLink、Hibernate和Kodo)以及其他领先的应用服务器供应商和JDO供应商所广泛接受。EJB3规范提供了一种极有吸引力的选择,用于构建企业Java应用程序的持久层。

在本文中,我将介绍EJB3 Java Persistence API,我将使用一个简单的域对象模型作为示例。

域模型

在构建企业应用程序时,我们首先会设计希望将其保存在数据库中的域对象模型;然后,与数据库设计人员合作,确定数据库模式。域模型表示了持久性对象或实体。实体可以是人、地方或事物,您存储关于它们的数据。它包含数据和行为。富域模型具有所有面向对象的行为特征,例如继承性和多态性。

我们的简单域模型(图1)具有Department与Employee实体之间的双向一对多关系。FullTime和Contractor实体继承自Employee实体。

图1.示例域对象模型

O-R框架和EJB3 JPA基础知识

如果使用过O-R映射框架(例如Oracle TopLink)构建应用程序持久层,您就会注意到,每种框架都提供三种工具:

一种声明式地执行O-R映射的方式。这种方法(称为O-R映射元数据)允许将对象映射到一个或多个数据库表。通常,大多数O-R框架使用XML存储O-R映射元数据。

一个用于操作实体(例如,执行CRUD操作)的API。此API允许持久化、检索、更新或移除对象。基于API和O-R映射元数据的使用,O-R框架代表开发人员执行数据库操作。此API将开发人员从编写JDBC或SQL代码以持久化域对象的工作中解放出来。

一种用于检索对象的查询语言。这是持久性最重要的方面,因为非法的SQL语句可能会降低数据库的速度。此方法也对应用程序屏蔽了混乱地遍布应用程序的的专有SQL。查询语言允许检索实体或对象,并将开发人员从编写SQL SELECT语句的工作中解放出来。

EJB3 Java Persistence API (JPA)提供一种标准O-R映射机制、一个执行CRUD操作的EntityManager API以及一种扩展EJB-QL以检索实体的方式,从而标准化了面向Java平台的持久性的使用。我将在后面讨论这三个方面。

启用元数据注释

Java SE 5.0引入了元数据注释。Java EE的所有组件(包括EJB3 JPA)大量使用元数据注释以简化企业Java开发。要了解关于元数据注释的更多信息,请参阅Kyle Downey所著的Bridging the Gap: J2SE 5.0 Annotations。在EJB3 JPA中,注释可以用于定义对象、关系、O-R映射和持久性上下文的注入。JPA还提供使用XML描述符来代替的选择。我将主要介绍元数据注释的使用,因为它们大大简化了开发。不过,您可能更倾向于在生产部署环境中使用XML描述符,因为可以使用它们重写注释。

时间: 2024-08-03 02:50:17

EJB3 Persistence API标准化持久性的相关文章

Java Persistence API 2.0更新

力争更全面.更出色 Java Persistence API (JPA) 最初引入到了 Java Platform Enterprise Edition (Java EE) 5 中,作为 规范 的 Enterprise JavaBean (EJB) 3.0 家族的一部分. 自那时起,JPA 1.0 逐渐成为流行的持久性框架.即使这一最初的规范已经很全面且功能很强大了,但是总会有一些改进的空间.下一代的 JPA 规范(JPA 2.0)目前正在 JSR 317 的开发中. JPA 专家组正在努力最终

使用Java Persistence API与JavaServer Faces开发Web应用

当您需要应用程序支持数据时, JavaPersistence API (JPA)为使 用关系型数据库提供了一个简单的方法.尽管过去 JPA 一直与 Enterprise JavaBeans (EJBs)一起使用,但是 JPA 与 Web 应用程序一起直接使用 也十分方便.本篇文章描述了 IBM Rational ApplicationDeveloper for WebSphere Software V7.5 提供的简化程序模型与工具,它们能方便地 构建使用 JPA 的 Web 应用程序.注意:本

Java Persistence API中带注释的命名查询是否真的非常有用?

对注释的注释 Java Persistence API (JPA) 定义了访问数据的多种方法:通过实体管理器.通过 JPA-QL 或通过本机查询.在 JPA 中,注释用作将 Java 对象映射到底层数据库的一种机制.您还可以提供 XML 元数据作为映射注释的覆盖或备选机制.不过,我看到的大多数 JPA 使用情况都明显喜欢使用注释.规范文档使用注释,而不使用基于 XML 的映射示例(仅向您显示 XML 模式)来表示所有示例这一事实可能是覆盖的原因之一.创建对象关系映射,以便从 Java 对象模型抽

集成JPA与pureQuery: 让Java Persistence API利用DB2静态执行

IBM WebSphere Application Server V7 交付了对其 Java Persistence API (JPA) 实现的增强,支持对 IBM DB2 数据服务器数据访问的优化,以提高安全性,并具备显著降低 数据访问开销的潜力.实现优化的方式是通过使用 WebSphere JPA 与 IBM Data Studio pureQuery 运行 时之间的内置集成来支持静态 SQL 访问--这一切全都不需要更改应用程序代码或运行广泛 的测试用例. 引言 IBM WebSphere

使用Java Persistence API修改数据库表行

有关如何使用 NetBeans IDE 的更多信息,请参阅 NetBeans 网站上的 支持和文档. 本文将使用以下技术和资源 JavaServer Faces 组件/ Java EE 平台 1.2/Java EE 5* Travel 数据库 不是必需的 阅读本文的前提条件本文是本系列文章(共两篇)的第二部分.您应该已经阅读了 在 Visual Web 应用程序中使用 Java Persistence API 这篇文章,并且创建了其中所描述 的两个项目以及一些不同的类和网页.第一篇文章提供了建立

在Visual Web应用程序中使用Java Persistence API

借助 NetBeans IDE 6.0 和 Visual Web 工具,您可以使用 Visual Web 数据提供程 序组件以及 Java Persistence API(JPA)来编写连接到数据库表的应用程序.建立了到 数据库表的连接之后,可以使用 Java Persistence API 执行数据库 CRUD 操作(即创建 .读取.更新和删除操作).在开发基于数据库的应用程序时,使用 Java Persistence API 能提供更高的灵活性. 本文是本系列文章的第 1 篇(共两篇),主要

JAVA PERSISTENCE API (JPA)

13.2.1. About JPA The Java Persistence API (JPA) is the standard for using persistence in Java projects. Java EE 6 applications use the Java Persistence 2.0 specification, documented here: http://www.jcp.org/en/jsr/detail?id=317.Hibernate EntityManag

Java Persistence API (JPA) 的陷阱

JPA是Java EE 5很重要的一部分,它的采用大大简化了Entity Bean的使用.但JPA有一个很明显的缺陷,就是无原则地采用JPA,就有可能将数据库结构移植到你的应用程序的代码中.这将给应用程序的维护和升级带来麻烦. 本文讲的"无原则地采用JPA",主要指通过Annotation对Entity Bean之间的关系进行定义.这些数据实体的关系,如一对多,一对一,多对一,多对多及关联操作(cascade)等,很明显是数据库概念.为了实现ORM的目的,JPA不得不将其在Entity

EJB3应用程序的开发方法

1.EJB3是一个深层次的规范,包含了3个文档,分别面向初级开发者和资深用户. 2.EJB3在容器之外使用实体Bean--> 新的容器外持久化特性. 3.EJB3由JSR220定义:第一个文档:综合介绍新版本的高级特性,着重介绍用于构建EJB组件的新的简化模型:后两个文档:分布讲解核心企业Bean框架和持久化模型的技术细节. (1)EJB3简化API(EJB3 Simplified API)高度概括新EJB3开发模型: (2)EJB3核心约定和要求(EJB3 Core Contracts and