Hibernate Session.delete() 一个对象(如果存在)
在会话类的 JavaDoc 中,删除方法的描述是:
从数据存储中移除持久性实例。该参数可以是与接收会话关联的实例,也可以是具有与现有持久状态关联的标识符的瞬态实例。
我的问题是:
- 我想删除一个分离对象,我可以使用这种方法,AFAIK会话首先使一个对象从分离中持久化,然后执行其操作。我说的对吗?
- 如果我不确定数据库中是否存在该对象,我应该使用Session.get()来检查它是否为空,然后执行删除操作,还是可以使用直接删除操作?
下面是一个代码片段:
public void removeUnallocatedUserIfExits(final long itemId) {
getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
session.flush();
session.setCacheMode(CacheMode.IGNORE);
UnallocatedUser unallocatedUser;
if ((unallocatedUser = (UnallocatedUser) session.get(UnallocatedUser.class, itemId)) != null) {
session.delete(unallocatedUser);
}
session.flush();
return null;
}
});
}
可以吗?