Java Data Objects (JDO) 全面解析
1. JDO 概述
Java Data Objects (JDO) 并非严格意义上的 O/R 映射规范,而是用于通用对象持久化,可覆盖任何后端数据存储,包括关系数据库和面向对象数据库。不过,大多数 JDO 实现主要针对关系数据库,因此可归类为 O/R 映射解决方案。
JDO 2.0 基于 JDO 1.0 构建,新增了两大重要特性:对分离对象的支持以及专门的 O/R 映射支持。在 Web 应用程序中,分离和重新附加对象是常见用例,而 JDO 1.0 API 无法妥善处理(与 iBATIS SQL Maps 和 Hibernate 等其他持久化解决方案不同)。访问关系数据库的 JDO 实现可支持多种可选的 O/R 映射特性,其中包括映射文件的通用元数据格式。
JDOQL 是一种遵循 ODMG 的 OQL 传统的纯对象查询语言,使用 Java 查询 API 和基于 Java 的条件字符串。在 JDO 2.0 中,查询功能将显著扩展,例如引入文本查询作为替代风格。许多当前的 JDO 实现已经支持查询扩展,主要用于访问关系数据库。
JDO 1.0 实现通过增强持久对象的字节码,使其实现 javax.jdo.PersistenceCapable
接口来进行更改检测。字节码增强器需要作为应用程序构建过程的一部分运行。增强后的类会在事务中通知 JDO StateManager 其实例字段的任何更改;JDO 始终处理实例字段,而不使用 JavaBean 属性的 setter 或 getter 方法。在事务提交时,JDO PersistenceManager 会将更改刷新到数据库,使内存状态与