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

用 Slice 扩展 OpenJPA 应用程序

 2010-10-09 08:13:28 来源:WEB开发网   
核心提示: 本节将依次就这些可配置的策略详细介绍 Slice 与分布式数据库环境相关的运行时行为,Slice 内的数据分布策略Slice 不要求任何的数据库模式的变更,用 Slice 扩展 OpenJPA 应用程序(8),而基于分区的类似的持久性解决方案通常都需要向数据库模式添加一个特殊的列来识别分区标识,

本节将依次就这些可配置的策略详细介绍 Slice 与分布式数据库环境相关的运行时行为。

Slice 内的数据分布策略

Slice 不要求任何的数据库模式的变更。而基于分区的类似的持久性解决方案通常都需要向数据库模式添加一个特殊的列来识别分区标识。Slice 不需要这类额外的模式层的信息,因为它根据持久性实例的逻辑名维护了实例和其原始数据库分区间的关联。这种关联是在从一个特定的片读出持久性实例时建立的。但当新的实例正在持久化时,Slice 并不能决定哪个数据库分区应与这个新实例相关联。因此,应用程序必须指定与新实例相关联的那个片。应用程序就是通过数据分布策略指定与新实例相关联的片的。这个策略可以在 persistence.xml 内根据如下所示配置:

    <property 
    name="openjpa.slice.DistributionPolicy" 
    value="acme.UserDistributionPolicy"/> 

这个属性值指定 org.apache.openjpa.slice.DistributionPolicy 接口的一个用户实现的全限定类名。这个接口协议允许用户应用程序决定这个新持久项的逻辑片。

清单 2. 数据分布策略的接口协议

package org.apache.openjpa.slice; 
public interface DistributionPolicy { 
 String distribute(Object pc, List<String> slices, Object context);  
} 

输入参数:

pc 是要被持久化的实例。这个实例与作为输入参数传递至 EntityManager.persist(pc) 的是同一个实例。

slices 是逻辑片标识的一个不可变列表。这个列表不包含目前不可连接的那些片。

context 是一个保留为未来使用的不透明对象。一般地,就实现而言,这个上下文与当前的持久性上下文相同。这个隐式语义并不能保证未来的使用。

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

Tags:Slice 扩展 OpenJPA

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