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]
相关文章推荐
- 关于HibernateDaoSupport getSession()不能释放资源的问题及解决方法
- 关于HibernateDaoSupport getSession()不能释放资源的问题及解决方法
- HibernateDaoSupport的getHibernateTemplate.find()方法带参查询返回结果是nul问题解决
- 使用Spring的HibernateDaoSupport时的getSession()方法相关问题
- 当Dao层继承了HibernateDaoSupport,使用底层SQL语句,session获取的方法,以及解决关联查询no session的问题
- Spring 的 HibernateDaoSupport 类的 getSession() 导致的连接泄露问题
- Spring 的 HibernateDaoSupport 类的 getSession() 导致的连接泄露问题
- 使用Spring的HibernateDaoSupport时的getSession()3个方法的区别
- 使用Spring的HibernateDaoSupport时的getSession()3个方法的区别
- hibernate默认连接池存在过期连接无法释放的问题及解决方法。
- Spring 的 HibernateDaoSupport 类的 getSession() 导致的连接泄露问题
- 遇到"不能执行已释放的 Script 的代码" 的问题和解决方法
- ActionBarSherlock SlidingMenu整合,解决SlidingMenu example的getSupportActionBar()方法不能用问题
- 继承 HibernateDaoSupport 的getSession 问题
- HibernateDaoSupport中的getSession()方法
- ActionBarSherlock SlidingMenu整合,解决SlidingMenu example的getSupportActionBar()方法不能用问题
- 解决继承HibernateDaoSupport用getHibernateTemplate()无法更新的问题
- ActionBarSherlock SlidingMenu整合,解决SlidingMenu example的getSupportActionBar()方法不能用问题
- ActionBarSherlock SlidingMenu整合,解决SlidingMenu example的getSupportActionBar()方法不能用问题
- 使用Spring的HibernateDaoSupport时的getSession()3个方法的区别