JPA 装入器
Java™ 持久性 API (JPA) 是允许将 Java 对象映射到关系数据库的规范。 JPA 包含使用 Java 语言元数据注释和/或 XML 描述符来定义 Java 对象与关系数据库之间的映射的完整对象关系映射 (ORM) 规范。 提供了多个开放式源代码和商业实现。
您可以将 Java 持久性 API (JPA) 装入器插件实现与 eXtreme Scale 配合使用,以与所选装入器支持的任何数据库进行交互。 要使用 JPA,必须在类路径中具有支持的 JPA 提供程序,例如 OpenJPA 或 Hibernate、JAR 文件和 META-INF/persistence.xml 文件。
JPALoader com.ibm.websphere.objectgrid.jpa.JPALoader 和 JPAEntityLoader com.ibm.websphere.objectgrid.jpa.JPAEntityLoader 插件是两个内置 JPA 装入器插件,用于将 ObjectGrid 映射与数据库进行同步。 您必须具有 JPA 实现(例如,Hibernate 或 OpenJPA)以使用此功能。 数据库可以是所选 JPA 提供程序支持的任何后端。
当您要使用 ObjectMap API 存储数据时,可以使用 JPALoader 插件。 当您要使用 EntityManager API 存储数据时,可以使用 JPAEntityLoader 插件。
JPA 装入器体系结构
JPA 装入器用于存储纯旧 Java 对象 (POJO) 的 eXtreme Scale 映射。

调用 ObjectMap.get(Object key) 方法时, eXtreme Scale 运行时首先检查条目是否包含在 ObjectMap 层中。 如果未包含,那么运行时将该请求委托给 JPA 装入器。 在请求装入密钥时, JPALoader 会调用 JPA EntityManager.find(Object key) 方法以从 JPA 层查找数据。 如果数据包含在 JPA 实体管理器中,那么会返回数据;否则,JPA 提供程序会与数据库交互以获取值。
对 ObjectMap 进行更新 (例如,使用 ObjectMap.update(Object key, Object value) 方法) 时, eXtreme Scale 运行时将为此更新创建 LogElement 并将其发送到 JPALoader。 JPALoader 调用 JPA EntityManager.merge(Object value) 方法来将该值更新到数据库。
对于 JPAEntityLoader,涉及相同的四层。 但是,由于 JPAEntityLoader 插件用于存储 eXtreme Scale 实体的映射,因此实体之间的关系可能会使使用方案复杂化。 eXtreme Scale 实体与 JPA 实体不同。 有关更多详细信息,请参阅 JPAEntityLoader 插件。有关更多信息,请参阅 JPAEntityLoader 插件。有关更多信息,请参阅 Programming Guide中有关 JPAEntityLoader 插件的信息。
方法
- get:返回值列表,此值列表与通过使用 JPA 检索数据传入的键列表对应。 该方法使用 JPA 以在数据库中查找实体。 对于 JPALoader 插件,返回的列表包含直接来自查找操作的 JPA 实体的列表。 对于 JPAEntityLoader 插件,返回的列表包含从 JPA 实体转换的 eXtreme Scale 实体值元组。
- batchUpdate:将数据从 ObjectGrid 映射写入到数据库。 根据不同操作类型(插入、更新或删除),装入器使用 JPA 保存、合并和移除操作来将数据更新到数据库。 对于 JPALoader,映射中的对象直接用作 JPA 实体。 对于 JPAEntityLoader,映射中的实体元组会转换为用作 JPA 实体的对象。
- preloadMap:使用 ClientLoader.load 客户机装入器方法预装入映射。 对于分区映射,仅在一个分区中调用 preloadMap 方法。 针对该分区指定 JPALoader 或 JPAEntityLoader 类的 preloadPartition 属性。 如果 preloadPartition 值设置为小于 0 或大于 (total_number_of_partitions - 1),那么会禁用预装入。
JPALoader 和 JPAEntityLoader 插件都使用 JPATxCallback 类来协调 eXtreme Scale 事务和 JPA 事务。 必须在 ObjectGrid 实例中配置 JPATxCallback 以使用这两种装入器。