spring集成hibernateTemplate 如何正确获取session
spring集成了sessionFactory 和hibernatetemplate、
该如何正确获取到session、
问题来源:
原来项目的service接口上有事务注解、
session都是从当前的事务中获取的、
如:接口上的注解
@Transactional(propagation = Propagation.REQUIRED,rollbackFor=Exception.class)
//hibernateTemplate 从spring中获取的、 SessionFactory sf = hibernateTemplate.getSessionFactory(); //创建session 、从当前事务中获取session Session session = SessionFactoryUtils.getSession(sf, false); //true是找不到事务允许新建个session,false是必须从当前事务中获取 //dosomething(); //释放是这样释放的 session.clear(); SessionFactoryUtils.releaseSession(session, sf);
//能获取session的方法我都试了些、 SessionFactory sf = hibernateTemplate.getSessionFactory();//sf Session session = sf.openSession();//session1 Session session = SessionFactoryUtils.getSession(sf,true);//session2 Session session = SessionFactoryUtils.getNewSession(sf);//session3 Session session = SessionFactoryUtils.doGetSession(sf, true);//session4 Session session = sf.getCurrentSession(); //session5 //do somethin .. session.clear(); //无论怎么样关闭,我都无法释放session session.close(); //甚至连这样释放的都一并用上了 SessionFactoryUtils.closeSession(session); SessionFactoryUtils.releaseSession(session, hibernateTemplate.getSessionFactory());
[解决办法]
在spring的配置文件中可以配置那个数据库连接不被占用时释放的参数啊,我用了效果还挺好的。
[解决办法]
之间也遇到同样的问题,但也是换道解决的,你如果这样解决了,分享下,相互学习
[解决办法]
http://blog.csdn.net/zmhinzaghi/article/details/7091629
[解决办法]
// 这样访问上面的私有 mine()方法?
private Object mine() { // do something(); return null;}public void hibernateTest() { super.getHibernateTemplate().execute(new HibernateCallback<Object>() { public Object doInHibernate(Session session) throws HibernateException, SQLException { // 这样访问上面的私有 mine()方法? return Student.this.mine(); } });}
[解决办法]
你现在是怎么玩的,把你的代码给展现一下吗?谢谢