问题描述
今天面试被问到:Hibernate中SessionFactory和Session以及Transaction的生命周期,哪位高手能帮忙解答下··谢谢了· 问题补充:aabcc 写道
解决方案
我一般不使用spring来声明事务但是很明显的,当你声明某些方法的事务模式后,SPRING会在你执行的方法环绕着 begin和commit 还有 rollback举个例,如果你 Service方法里面的session是交给spring管理的,那spring会在你service方法开始执行时 openSession,结束时close如果session池化的话就是 还给池 等待调用。知道原理了,只要弄清楚SPRING怎么帮你管理了,结论就出来了。
解决方案二:
如果不考虑jvm回收的情况transaction 在 session beginTransaction()时 创建,session close()时 销毁session 在 sessionFactory(sessionFactoryImpl) openSession()时 创建session.close()时 销毁sessionFactory就是 buildSessionFactory时创建,close()时 销毁跟servlet生命周期的回答应该不一样,servlet交给容器管理,所以有响应请求后的一系列生命周期描述SessionFactory Session 和 Transcation,除非你交给spring去管理,一般情况下自己写的 HibernateUtil和 自己写的 DAO就是自己控制周期。我是这么理解的,希望有人能补充一下。如果你的考官是问你在spring管理下 这三个东西的生命周期,那回答可能会不一样。