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

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

核心提示:1、使用手动释放资源: Sessionsession=getSession(); //代码 //Queryquery=session.createQuery(hql); //query.list(); releaseSession(session); 另外还可以用getHibernateTemplate()来代替。 2、使用注解@Transactional管理事务 这个需要注解驱动: tx:an
1 、使用手动释放资源:
1.      Session session = getSession();   
2.      // 代码   
3.      //Query query= session.createQuery(hql);  
4.      //query.list();   
5.      releaseSession(session);   
另外还可以用getHibernateTemplate()来代替。
2 、使用注解@Transactional管理事务
这个需要注解驱动:
1.     <tx:annotation-driven   transaction-manager = "transactionManager"  
2.                         proxy-target-class = "true"   />   
在使用类或者方法上用@Transactional注解即可。
3 、不使用注解来管理事务,使用声明式事务管理
1.     <tx:advice   id = "txAdvice"   transaction-manager = "transactionManager" >   
2.               <tx:attributes>   
3.                         <tx:method   name = "get*"   read-only = "true"   />  
4.                         <tx:method   name = "*"   />   
5.                </tx:attributes>   
6.        </tx:advice>   
7.     <aop:config>   
8.                <aop:pointcut   id = "MyDaoOperation"
9.                     expression = "execution(* x.y.dao.MyDAO.*(..))"   />
10.             <aop:advisor   advice-ref = "txAdvice"   pointcut-ref = "MyDaoOperation"   />   
11.  </aop:config>   
或者
1.     <aop:config>   
2.                <aop:pointcut   id = "daoOperation"   
3.                         expression = "execution(* x.y.dao.*.*(..))"   />
4.                <aop:advisor   advice-ref = "txAdvice"   pointcut-ref = "daoOperation"   />   
5.     </aop:config>   
  其他事务配置方法参考spring文档或
http://www.blogjava.net/robbie/archive/2009/04/05/264003.html
4 、添加openSessionInView,该方法没有亲自测试。
注:123种方法亲自测试过可以使用,最好的方法是配置spring事务,如果存在
HibernateDaoSupport getSession() 连接占用问题,就要检查其spring事务管理的配置是否正确。
参考:http://www.blogjava.net/robbie/archive/2009/04/05/264003.html

你可能感兴趣的:(Hibernate,资源,解决,释放,getSession)