读书人

Hibernate剔除一个session.load来的Mo

发布时间: 2012-10-24 14:15:58 作者: rapoo

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(DeleteEventevent, Set transientEntities)方法中的一句话“Object entity = persistenceContext.unproxyAndReassociate(event.getObject() );”剥去Proxy外壳而取hit数据库地数据。

?

哪为什么要这样呢?也就是说不这样会有什么不良后果尼?

读书人网 >软件架构设计

热点推荐