推荐:http://www.oracle.com/technology/global/cn/products/ias/toplink/jpa/resources/toplink-jpa-annotations.html
持久性对于大多数企业应用程序都非常要害,因为它们需要访问关系数据库(例如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描述符,因为可以使用它们重写注释。
标准化JPA中的O-R映射
定义持久对象:实体
实体是轻量级的域对象——您希望将其保存在关系数据库中的Plain Old Java Object (POJO)。像任何POJO一样,实体可以是抽象或具体类,它能够扩展另一个POJO。可以使用javax.persistence.Entity注释将POJO标记为实体。
以下代码将使域模型中的Department对象成为实体:
package onjava;
import java.io.Serializable;
import java.util.Collection;
import javax.persistence.*;
@Entity
@NamedQuery(name="findAllDepartment", query="select o from Department o")
@Table(name="DEPT")
public class Department implements Serializable {
@Id
@Column(nullable=false)
protected Long deptNo;
@Column(name="DNAME")
protected String name;
@Column(name="LOC")
protected String location;
@OneToMany(mappedBy="department")
protected Collection employees;
public Department() {
}
...
public Collection getEmployees() {
return employees;
}
本文来源【学网】网站链接是http://www.xue5.com
public void setEmployees(Collection employees) {
this.employees = employees;
}
public Employee addEmployee(Employee employee) {
getEmployees().add(employee);
employee.setDepartment(this);
return employee;
}
public Employee removeEmployee(Employee employee) {
getEmployees().remove(employee);
employee.setDepartment(null);
return employee;
}
}
每个实体都有一个主键;可以在持久字段或属性上使用Id注释将其标记为主键。实体通过使用字段或属性(通过setter和getter方法)来保存其状态。这取决于在哪里使用O-R映射注释。以上示例使用基于字段的访问;我们已经使用了具有deptNo字段的Id注释。要使用基于属性的访问,就要使用属性标记注释(例如Id),
分享到:
相关推荐
《APress Pro EJB 3 Java Persistence API》一书由Mike Keith和Merrick Schincariol共同编写,出版于2006年,是关于Java Persistence API(JPA)与Enterprise JavaBeans(EJB)3的深入研究。本书旨在为读者提供关于...
这本书由Keith Schincariol和Merrick Schincariol撰写,两位作者也是《Pro EJB3:Java持久化API》的作者,他们在JPA领域有着丰富的经验。 Java持久化API(Java Persistence API,简称JPA)是Java平台上的一个标准,...
根据提供的文件信息,我们可以推断出这本书主要关注的是EJB 3中的Java Persistence API(JPA)技术。接下来,我们将详细解析与该书标题、描述、标签及部分内容相关的知识点。 ### 一、EJB 3简介 EJB (Enterprise ...
总之,《Pro EJB 3 Java Persistence API》是Java EE开发者深入学习EJB 3.0和JPA的宝贵资源,它可以帮助读者掌握如何利用JPA简化企业级应用的数据持久化,提升开发效率,并确保应用程序的稳定性和性能。通过阅读本书...
Java Persistence API(简称 JPA)是 Java 社区规范 JSR 220 的一部分,它定义了一种对象关系映射工具的标准,允许 Java 开发人员将 Java 应用程序对象持久化到数据库表中。JPA 首次在 EJB 3.0 版本中作为可选特性...
EJB3的持久化特性基于Java Persistence API(JPA),它是Java EE和Java SE中用于对象/关系映射的标准。JPA允许开发者使用面向对象的方式来操作数据库,通过注解(Annotations)和XML配置文件定义对象与数据库表之间...
`ejb3-persistence-api`是Java企业版(Java EE)的一部分,它定义了用于持久化对象到数据库的标准API,即Java Persistence API(JPA)。这个API在ejb3-persistence.jar中实现,提供了强大的ORM(对象关系映射)能力...
《EJB3 JAVA持久化API》一书由Mike Keith和Merrick Schincariol共同撰写,深入探讨了Java Persistence API(JPA),这是Java平台中用于处理对象关系映射(ORM)的一种规范,旨在简化企业级Java应用中的数据访问与...
本书《Pro.EJB.3.Java Persistence API》深入探讨了如何利用EJB 3.0和Java Persistence API来构建高效且可维护的企业级Java应用程序。通过对这些技术的详细讲解,读者可以更好地理解和应用这些强大的工具来解决实际...
`ejb3-persistence.jar`包含了JPA(Java Persistence API)的实现,JPA是一个标准的API,它定义了如何在Java应用程序中管理和持久化对象。JPA通过提供ORM(Object-Relational Mapping)工具,使得开发者可以使用面向...
综上所述,EJB 3.0持久性API通过简化ORM,提高了开发效率,并提供了强大的查询和事务管理功能,是Java企业级应用中不可或缺的一部分。理解和熟练运用这些知识点,将有助于构建高效、稳定的企业级系统。
- **JPA**:Java Persistence API,是一种用于管理Java应用中的持久性和对象/关系映射的标准API。 - **EJB 3.0**:Enterprise JavaBeans 3.0版本,是一个Java企业级应用编程模型的一部分,它简化了Java应用服务器上...
### EJB 3.0与Java Persistence API (JPA) #### 概述 EJB(Enterprise JavaBeans)3.0规范及其内置的Java Persistence API(JPA)是Java企业级应用开发的重要组成部分。EJB 3.0是EJB技术的一个重大版本更新,它...
1. **实体Bean (Entity Beans)**:代表持久化的数据对象,EJB3中实体Bean使用了JPA(Java Persistence API)进行持久化管理,使得ORM(对象关系映射)更为简便。 2. **会话Bean (Session Beans)**:处理业务逻辑,...
ejb3-persistence还引入了JPA(Java Persistence API),这是Java EE中的标准持久化API,它提供了一种统一的方式来管理和查询数据。JPA允许开发者使用JPQL(Java Persistence Query Language)进行面向对象的查询,...
8. **JPA(Java Persistence API)**:虽然不是EJB API的一部分,但常常与EJB一起使用,提供更现代、更灵活的持久化机制,取代了传统的CMP。 9. **EJB 3.x之后的简化**:从EJB 3.0版本开始,EJB API变得更加轻量级...
在EJB3中,JPA被集成作为默认的持久化框架,使得EJB组件可以轻松地管理和存储数据。通过在EJB3实体bean上使用JPA注解,开发者可以直接在bean中定义数据库表结构和字段。这些注解包括`@Entity`(定义实体类)、`@...
2. **实体bean的简化**:EJB 3.0引入了JPA(Java Persistence API),取代了原来的EJB 2.x中的CMP(容器管理持久化)。JPA通过ORM(对象关系映射)技术,允许开发者直接在Java类上定义数据模型,极大地简化了数据库...