sno*_*ake 27 java orm persistence hibernate jpa
我的应用程序的Web UI层中有一个JPA实体实例.我想随时知道这个实体是否已经存在于数据库中,或者它是否仅存在于用户会话中.
它将在业务层,我会使用entitymanager.contains(Entity)方法,但在我的UI层中,我认为我需要一个额外的属性来指示实体是否已被保存.怎么实现呢?我正在考虑暂时关注选项:
有什么建议/其他建议吗?
我正在使用JPA 1与Hibernate 3.2实现,并希望坚持标准.
Pas*_*ent 46
首先,让我们提醒一个实体的各种状态.从JPA 1.0规范(在3.2实体实例的生命周期)中:
本节介绍用于管理实体实例生命周期的EntityManager操作.实体实例可以被表征为新的,管理的,分离的或被移除的.
- 一个新的实体实例有没有持久化标识,并且尚未与一个持久化上下文关联.
- 一个管理实体实例的实例与持久标识 当前与一个持久化上下文关联.
- 甲分离实体实例的实例与持久标识 与一个持久上下文相关联不是(或不再).
- 一个删除实体实例与持久标识,与一个持久化上下文相关联,即定于从数据库中取出一个实例.
还有一个图解说明:

因此,根据定义,已经保留了一个分离的实体,我实际上并不认为这是您真正的问题.现在,如果你想知道一个实体是否是新的(即没有任何持久性身份),那么这个:
@Transient
public boolean isNew() {
return (this.id == null);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18827 次 |
| 最近记录: |