2

我目前正在研究官方的 JPA 2 最终规范。规范中是否包含以下声明?

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

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

4

1 回答 1

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 所做的更改。

于 2012-11-09T21:20:38.387 回答