JPA 2持久化上下文规范

时间:2012-11-09 09:35:46

标签: java jpa-2.0 specifications

我目前正在研究正式的JPA 2最终规范。 the following statement是否包含在规范中的任何位置?

  

实体管理器保证在单个持久性上下文中,   对于任何特定的数据库行,只有一个对象   实例

要么我没有清楚地理解规范,要么我找不到证明所引用的陈述是规范的一部分的部分。

1 个答案:

答案 0 :(得分:1)

不,规范没有给出这样的保证。但在我看来,这是隐含的假设。

在实践中,有时相同的表被映射到两个不同的实体。其中一个被视为只读实体。例如,只读实体可用于报告目的,并且优化仅包含其他实体中的字段子集。这可以例如如下:

@Entity
public class EntityA {    
    @Id private Integer id;
    @Lob
    byte[] tooHeavyToLoadAlways;
}

@Entity
@Table(name="EntityA")
public class EntityALightWeight {
    @Id private Integer id;
}

对于JPA,这两个实体之间没有任何关联,因此请注意,只有第一个实体被修改而第二个实体被刷新是应用程序的责任。因此,应谨慎使用,因为EntityALightWeight可以从数据库刷新,但永远不会包含在同一事务中对EntityA所做的更改。