WEB开发网
开发学院软件开发Java 用 Slice 扩展 OpenJPA 应用程序 阅读

用 Slice 扩展 OpenJPA 应用程序

 2010-10-09 08:13:28 来源:WEB开发网   
核心提示: 该实现必须返回一个给定的逻辑片标识符中,Slice 在被持久化的每个根对象实例上调用这个用户实现,用 Slice 扩展 OpenJPA 应用程序(9),此根对象实例是被此应用程序调用的 EntityManager.persist(Object r) 的显式输入参数,有一点值得注意的是单独一项 r

该实现必须返回一个给定的逻辑片标识符中。

Slice 在被持久化的每个根对象实例上调用这个用户实现。此根对象实例是被此应用程序调用的 EntityManager.persist(Object r) 的显式输入参数。有一点值得注意的是单独一项 r 上的一个显式 persist(r) 操作可间接地持久化其他的相关项。JPA 注释(或映射描述符)可用一个持久操作,比如 persist()、refresh()、merge() 或 remove() 将如何顺该关系路径层叠来修饰一个 Java 引用关系。因此,如果一个实例 r 与另一个实例 q 相关,并且 r 和 q 间的关系是由层叠 PERSIST 注释的,那么 q 作为持久化 r 的副作用也将被持久化。这个行为也被称为是传递持久化。

Slice 在持久化一个新的根实例 r 时所作的关键决定是:所有从 r 可获得的相关项均存储在相同的片内。因而,数据分布策略的用户实现只 为根项 r 调用。根据当前的分布策略,Slice 自动地为根实例计算传递闭包 C(r) 并将 C(r) 的每个成员分配到 r 的同一个片。传递闭包的并置是必须的,因为这个虚拟数据库不能执行跨物理数据库的连接,因此,如果逻辑关联的记录位于不同的数据库,那么就不能急于获取关系。这个限制就被称为是并置限制。稍后,我们将讨论如何处理并置限制(比如,一个懒惰关系可跨分区存在或同一个项实例如何能在多片间复制)。

对于大多数应用程序,数据分布策略由用户应用程序提供,但 Slice 自身为初学者或实验原型也提供了几个开箱即用的实现策略。默认的开箱即用的策略会向每个新实例分配一个随机的片。

将同一个项存储到多个片

分布策略被用于在单片内存储项,但并置限制要求所有相关实例都被存储在同一个片内。对于某些常用的数据使用模式,这个限制太过严格(例如,像 Stock Ticker Symbol 或 Country Code 或 Customer Type 这样的被很多其他类型引用的主数据)。在这种情况下,一个类型可被指定为跨多片复制。persistence.xml 配置必须以逗号分隔列表的形式枚举类型的名称:

上一页  4 5 6 7 8 9 10  下一页

Tags:Slice 扩展 OpenJPA

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接