Hibernate剔除一个session.load来的Model类
如下所示:
public static void delete() {
Session session = HiberUtil.getSession();
ProjCost toDelete = (ProjCost)session.load(ProjCost.class, 6723L); // 用load方式就是想不希望Hibernate去touch数据库,毕竟delete时只需要一个id就够了。
session.close();
session = HiberUtil.getSession();
session.beginTransaction();
session.delete(toDelete);
session.flush();
session.getTransaction().commit();
}
我想用这样的方法来删除一行记录,目的是想实验下Hibernate能不能不去数据库中加载数据情况下删除一行记录。
实验结果是,现在3.2版本的不行, Hibernate会自动加载数据。
执行过程中,org.hibernate.event.def. DefaultDeleteEventListener类中onDelete(DeleteEvent event, Set transientEntities)方法中的一句话“Object entity = persistenceContext.unproxyAndReassociate( event.getObject() );”剥去Proxy外壳而取hit数据库地数据。
哪为什么要这样呢?也就是说不这样会有什么不良后果尼?