spring整合hibernate以后,对于删除功能,只提供了delete(entity),而没有提供类似于get(entity.class,id)这样的API,这时,要想实现根据id来删除某一个对象,可以参考一下两种方法
1、不使用spring对hibernate的支持
String hql = "delete from Item where orderId = ?";
Session session = this.getSession();
session.createQuery(hql).setInteger(0, orderId).executeUpdate();
session.close();
2、使用spring对hibenrate的支持
final int orderId1 = orderId;
this.getHibernateTemplate().execute(new HibernateCallback() {
@Override
public Object doInHibernate(Session session) throws HibernateException,
SQLException {
String hql = "delete from Item where orderId = ? ";
return session.createQuery(hql).setInteger(0, orderId1).executeUpdate();
}
});
对于以上两种方法,一个比较显著的区别就在于后者将session的关闭交给了框架去处理。