您的位置:首页 > 其它

HibernateDaoSupport getSession()不能释放资源的问题及解决方法

2010-06-23 13:29 756 查看

HibernateDaoSupport getSession()不能释放资源的问题及解决方法

[align=left]核心提示:1、使用手动释放资源: Sessionsession=getSession(); //代码 //Queryquery=session.createQuery(hql); //query.list(); releaseSession(session); 另外还可以用getHibernateTemplate()来代替。 2、使用注解@Transactional管理事务 这个需要注解驱动: tx:an [/align]
[align=left]1、使用手动释放资源:[/align]
[align=left]1. Session session = getSession(); [/align]
[align=left]2. //代码 [/align]
[align=left]3. //Query query= session.createQuery(hql); [/align]
[align=left]4. //query.list(); [/align]
[align=left]5. releaseSession(session); [/align]
[align=left]另外还可以用getHibernateTemplate()来代替。[/align]
[align=left]2、使用注解@Transactional管理事务[/align]
[align=left]这个需要注解驱动:[/align]

[align=left]1. <tx:annotation-driven transaction-manager="transactionManager" [/align]
[align=left]2. proxy-target-class="true" /> [/align]
[align=left]在使用类或者方法上用@Transactional注解即可。[/align]
[align=left]3、不使用注解来管理事务,使用声明式事务管理[/align]

[align=left]1. <tx:advice id="txAdvice" transaction-manager="transactionManager"> [/align]
[align=left]2. <tx:attributes> [/align]
[align=left]3. <tx:method name="get*" read-only="true" /> [/align]
[align=left]4. <tx:method name="*" /> [/align]
[align=left]5. </tx:attributes> [/align]
[align=left]6. </tx:advice> [/align]
[align=left]7. <aop:config> [/align]
[align=left]8. <aop:pointcut id="MyDaoOperation" [/align]
[align=left]9. expression="execution(* x.y.dao.MyDAO.*(..))" />[/align]
[align=left]10. <aop:advisor advice-ref="txAdvice" pointcut-ref="MyDaoOperation" /> [/align]
[align=left]11. </aop:config> [/align]
[align=left]或者[/align]

[align=left]1. <aop:config> [/align]
[align=left]2. <aop:pointcut id="daoOperation" [/align]
[align=left]3. expression="execution(* x.y.dao.*.*(..))" /> [/align]
[align=left]4. <aop:advisor advice-ref="txAdvice" pointcut-ref="daoOperation" /> [/align]
[align=left]5. </aop:config> [/align]
[align=left] 其他事务配置方法参考spring文档或[/align]
[align=left]http://www.blogjava.net/robbie/archive/2009/04/05/264003.html[/align]
[align=left]4、添加openSessionInView,该方法没有亲自测试。[/align]
[align=left]注:1、2、3种方法亲自测试过可以使用,最好的方法是配置spring事务,如果存在[/align]
[align=left]HibernateDaoSupport getSession()连接占用问题,就要检查其spring事务管理的配置是否正确。[/align]
[align=left]参考:http://www.blogjava.net/robbie/archive/2009/04/05/264003.html[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐