将持久属性映射至 JPA 的 XML 列
如果数据库支持可扩展标记语言 (XML) 列类型,那么您可以使用映射工具来管理 XML 对象。 您可以选择将 XML 列映射到 Java™ 字符串或 Java 字节数组字段。
有关此任务
注意力:将持久属性映射到 XML 列的支持不再是WebSphere® Application Server用于 JPA 扩展。 可在 Apache OpenJPA 文档中找到有关 XML 映射的信息。
应用程序服务器的 JPA 支持通过使用第三方解决方案管理映射来支持 XML 对象的管理。 这些映射方法使得难于将 XML 对象用作字符串或字节数组。
DB2® ,Oracle,并且 SQLServer 数据库支持 XML 列类型、XPath 查询和这些列的索引。
持久属性至 XML 映射
具有 XML 列支持的嵌入式类需要使用 XML 编组将数据写入 XML 列,而使用取消编组从 XML 列检索数据。 嵌入式类上的路径表达式和谓词均将转换为 XML 谓词、XPATH 表达式或 XQuery 表达式并写入数据库中。
WebSphere Application Server支持JPA应用程序使用第三方工具进行XML映射。 此任务是通过定制字段映射的扩展点完成的。 第三方映射工具通过为已映射至 XML 列的持久字段提供定制值处理程序来使用扩展点。 在OpenJPA,该值处理程序被命名为org.apache.openjpa.xmlmapping.XmlValueHandler并且该处理程序需要映射到 XML 列的 Java 字段上的 @Strategy 注释。
过程
示例
例如,Order 实体的属性 shipAddress 被映射至 XML 列 shipaddr:
@Entity
public class Order {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
int oid;
@Persistent
@Strategy("org.apache.openjpa.xmlmapping.XmlValueHandler")
@Column(name="shipaddr")
Address shipAddress;
…OpenJPA 映射工具在 ORDER 表的表定义中生成具有 XML 类型的 SHIPADDR 列。