【发布时间】:2011-08-12 04:15:08
【问题描述】:
Session类的JavaDoc中delete方法的描述是:
从数据存储中删除一个持久实例。该参数可以是与接收会话相关联的实例,也可以是具有与现有持久状态相关联的标识符的瞬态实例。
我的问题是:
- 我想删除一个分离对象,我可以用这个方法吗,AFAIK会话首先使一个对象从分离中持久化,然后执行它的操作。我对吗?
- 如果我不确定数据库中的对象是否存在,我应该使用 Session.get() 来检查它是否为空,然后执行删除操作,还是可以直接使用删除操作?
这是一个代码sn-p:
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;
}
});
}
没事吧?
【问题讨论】: