EJB3持久化规范详解

需积分: 9 0 下载量 133 浏览量 更新于2024-07-26 收藏 3.19MB PDF 举报
"EJB3持久化规范 (简体中文版)" EJB3持久化规范是Java企业级应用程序(J2EE)开发中的一个重要组成部分,它定义了如何在Java环境中管理和存储对象状态,使得这些对象能够在数据库中持久化。EJB(Enterprise JavaBeans)3.0引入了对持久化处理的重大改进,简化了模型,使其更加面向对象,并减少了对XML配置的依赖。 1. 实体(Entity) - 实体类的要求:实体类是持久化的基础,它们必须遵循特定的规则,如包含持久化字段和属性,以及可能的主键和唯一标识。 - 持久化字段和属性:这些是与数据库表字段对应的类成员,它们的数据会被存储和检索。 - 主键和实体唯一标识:每个实体通常有一个或多个字段作为其主键,用于唯一识别数据库中的记录。 - 可嵌入类:允许将一个类的实例嵌入到另一个实体中,作为其属性的一部分进行持久化。 - 非关系字段或属性的映射缺省值:默认情况下,EJB3会尝试自动映射非标准数据类型。 - 实体关系:实体可以与其他实体建立关联,例如一对一、一对多、多对一和多对多关系。 - 继承:支持类的继承结构,允许子类共享父类的持久化特性。 - 继承映射策略:定义如何处理继承层次结构中的持久化,例如单表继承或多表继承。 2. 实体操作 - ENTITYMANAGER:实体管理器是处理实体的主要接口,负责实体的创建、读取、更新和删除操作。 - EntityManagerAPI:提供了一组方法来管理实体实例的生命周期,包括事务控制和并发管理。 - 实体实例的生命周期:涵盖了从创建(持久化)、删除(移除)到数据库同步的过程。 - 持久化实体实例:当实体被管理并保存在持久化上下文中时,其状态会在适当时候被保存到数据库。 - Removal:删除实体实例,这会从数据库中移除相应的记录。 - 数据库同步:在事务提交或回滚时,实体管理器会确保数据库与实体实例的状态一致。 - 脱管实体:非管理状态的实体不参与数据库同步,需手动处理其状态。 - 管理实体实例:实体管理器可以将实体置于管理状态,从而监控其生命周期。 3. 持久化上下文的生命周期 - 事务提交:当事务结束时,持久化上下文中的所有更改都会被持久化到数据库。 - 事务回滚:如果事务失败,所有更改都将被撤销,数据库状态保持不变。 4. 乐观锁和并发 - 乐观锁:在并发环境下,乐观锁假设冲突很少发生,只在更新时检查版本信息以防止并发问题。 - 版本属性:通常是一个自增的字段,用于跟踪实体的修改。 - 锁模式:不同的锁策略,如读锁和写锁,用于控制并发访问。 - OptimisticLockException:当检测到并发冲突时抛出,表示更新失败。 5. 实体监听器和回调方法 - 实体监听器允许开发者定义在特定事件(如创建、更新、删除)时执行的代码,增强了对实体生命周期的控制。 EJB3持久化规范提供了强大的工具和机制,让开发者能够更方便地在Java应用程序中实现对象的持久化,同时简化了与数据库交互的复杂性,提升了开发效率。通过实体、实体管理器和各种并发控制策略,开发者可以构建高度灵活和可扩展的J2EE应用程序。