Art*_*ald 41
调用merge()通常比update()更安全吗?
作为一种避免NonUniqueObjectException的方法,是的.我认为它解释了为什么JPA不允许更新方法.
使用merge()而不是update()的缺点是什么?
未经修改的用户可能认为他或她拥有新的管理实体.就像是
// myEntity (passed as parameter does not become managed)
// Only the one returned by the merge operation is a managed entity
session.merge(myEntity);
// "newValue" is not commited because myEntity is not managed
myEntity.setMyProperty("newValue");
Run Code Online (Sandbox Code Playgroud)
如果您的持久化上下文不包含您的实体,那么您可能不希望选择更新前的默认行为.但它可以避免
...
public void updateMyEntity(MyEntity updateableMyEntity);
// load does not hit the database
MyEntity myEntity = (MyEntity) session.load(MyEntity.class, updateableMyEntity.getId());
BeanUtils.copyProperties(myEntity, updateableMyEntity);
}
Run Code Online (Sandbox Code Playgroud)
这样,您可以在不使用合并或更新方法的情况下更新实体.有关更多信息,请参阅此问题:在Hibernate上更新分离对象的某些字段的最佳方法?
| 归档时间: |
|
| 查看次数: |
35259 次 |
| 最近记录: |