论坛首页 Java企业应用论坛

Spring集成Hibernate之Session管理

浏览 19016 次
精华帖 (1) :: 良好帖 (7) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2011-08-17  
其实我想知道在不同方法嵌套事物里面 session是不是只有一个。

还有如果有嵌套方法 其中一个方法是不加事物的,那么这个方法的提交顺序是怎么样的。前面的会不会挂起
0 请登录后投票
   发表时间:2011-08-17  
aa87963014 写道
其实我想知道在不同方法嵌套事物里面 session是不是只有一个。

还有如果有嵌套方法 其中一个方法是不加事物的,那么这个方法的提交顺序是怎么样的。前面的会不会挂起

如果使用HibernateTemplate的话, 每个线程都只有一个Session。

每次执行HibernateTemplate操作的话, Spring会根据这个ThreadLocal的Session资源创建一个Session代理对象(帖子最后讲到了)。并且如果使用HibernateTemplate的话,即便你不开启事务,Spring也会在需要获取Session的时候,隐式开启一个事务,这个事务只是用来获取线程资源(Session等)的。这个隐式的事务不参与持久层操作,效率上不会有影响。

但是如果使用getSession()的话, 在不开启事务的情况下, 每次getSession()都会创建一个新Session、 并且获取一个新Connection。 效率极其低下。
0 请登录后投票
   发表时间:2011-08-17  
http://www.iteye.com/topic/733971O(∩_∩)O哈哈~
0 请登录后投票
   发表时间:2011-08-30  
有个疑问:
就是我用的Criteria来进行查询操作
在HibernateTempleteSupport里好像没有找到Criteria相关的方法
于是我的子类虽然继承了HibernateDaoSupport,但是还是用了getSession方法(为了用session.CreateCriteria),这个时候还是需要我手动关闭session或者我通过事物来关闭session对吧?
0 请登录后投票
   发表时间:2011-08-30  
jfzlnyf 写道
有个疑问:
就是我用的Criteria来进行查询操作
在HibernateTempleteSupport里好像没有找到Criteria相关的方法
于是我的子类虽然继承了HibernateDaoSupport,但是还是用了getSession方法(为了用session.CreateCriteria),这个时候还是需要我手动关闭session或者我通过事物来关闭session对吧?


可以使用HibernateTemplate#execute(HibernateCallback);
这样的额、 这个里面获取到的 Session 就可以完全只专注于逻辑而不必管Session的关闭什么的。

如果使用getSession的话、 一定要保证此方法在某个事务边界内,也就是说开启了声明式事务管理。开启了声明式事务管理时使用getSession的效果和HibernateTemplate一样,

但是,如果没有开启事务的话,getSession获取到的Session需要随时关闭,并且即便这样它也是相当低效率的。
0 请登录后投票
   发表时间:2011-08-30  
s929498110 写道
jfzlnyf 写道
有个疑问:
就是我用的Criteria来进行查询操作
在HibernateTempleteSupport里好像没有找到Criteria相关的方法
于是我的子类虽然继承了HibernateDaoSupport,但是还是用了getSession方法(为了用session.CreateCriteria),这个时候还是需要我手动关闭session或者我通过事物来关闭session对吧?


可以使用HibernateTemplate#execute(HibernateCallback);
这样的额、 这个里面获取到的 Session 就可以完全只专注于逻辑而不必管Session的关闭什么的。

如果使用getSession的话、 一定要保证此方法在某个事务边界内,也就是说开启了声明式事务管理。开启了声明式事务管理时使用getSession的效果和HibernateTemplate一样,

但是,如果没有开启事务的话,getSession获取到的Session需要随时关闭,并且即便这样它也是相当低效率的。



3Q,以前一直没关注过这个方法,在你的提示下看了下,果真好用,多谢!
0 请登录后投票
   发表时间:2011-09-16  
好贴。顶起来
0 请登录后投票
   发表时间:2011-11-17  
楼主功底挺深的,还行,不错。。。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics