社区
Java EE
帖子详情
spring管理hibernate,事务配置的疑惑
luc_ne
2008-03-17 03:33:53
web应用,使用spring+hibernate,一般service和dao都设计为单例。那么dao中的session实例是如何管理的呢?
是每调用一次HibernateDaoSupport中的方法操作一次db都重新获取session呢?
还是一个dao实例中只有一个session实例呢?
...全文
752
12
打赏
收藏
spring管理hibernate,事务配置的疑惑
web应用,使用spring+hibernate,一般service和dao都设计为单例。那么dao中的session实例是如何管理的呢? 是每调用一次HibernateDaoSupport中的方法操作一次db都重新获取session呢? 还是一个dao实例中只有一个session实例呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
westsum
2008-03-19
打赏
举报
回复
将Session绑定在jdbc事务上在配置文件里加上:
hibernate.transaction.factory.class = org.hibernate.transaction.JDBCTransactionFactory
hibernate.current_session_context_class=thread
这样当前的Session和关联的Hibernate事务被绑定到当前线程上
要绑定到JTA事务上
hibernate.transaction.factory.class = org.hibernate.transaction.JTATransactionFactory
hibernate.current_session_context_class=jta
睿音
2008-03-18
打赏
举报
回复
[Quote=引用楼主 luc_ne 的帖子:]
web应用,使用spring+hibernate,一般service和dao都设计为单例。那么dao中的session实例是如何管理的呢?
是每调用一次HibernateDaoSupport中的方法操作一次db都重新获取session呢?
还是一个dao实例中只有一个session实例呢?
[/Quote]
Spring的Session是与线程绑定的,一个线程里面Session是共享的。
luc_ne
2008-03-18
打赏
举报
回复
呵呵,自己太懒,是该看看spring的源码了
favorite7w
2008-03-18
打赏
举报
回复
同一时刻不同的请求,必定是由不同的线程发起的。
而ThreadLocal的作用就是为不同的线程保存同一类的不同实例。
而在Lz上面描述的场景里,session就是这个需要为不同线程独立维护的实例。
luc_ne
2008-03-18
打赏
举报
回复
举个例子吧,service中调用dao的a,b两个方法去操作数据库。
那么对一个请求来说,a,b执行时应该是使用的一个session。
而同一时刻不同的请求所用到的session是不同的。
而service,dao都是单例的,spring是如何做到不同请求使用不同session的呢?
favorite7w
2008-03-18
打赏
举报
回复
上面少打一个字,应该是"
没
看过Spring有关这方面的代码",晕。
favorite7w
2008-03-18
打赏
举报
回复
看过Spring有关这方面的代码,但我觉得是用ThreadLocal实现的,类似于HibernateUtil.java的实现,Lz可以在网上搜一下,挺简单又实用的一种方法。
luc_ne
2008-03-18
打赏
举报
回复
to tianyidan
使用spring的事务配置,没有必要去手动管理session。
我只是想知道spring内部是如何实现的。
ldgs
2008-03-18
打赏
举报
回复
在每个dao操作中使用SessionFactory.getCurrentSession()方法,该方法可以得到当前事务绑定的session。
tianyidan
2008-03-17
打赏
举报
回复
我觉得如果配置了事物管理,而且没有手动去创建session,那么应该是在事务管理那个bean里创建一个新的session。
oliwa
2008-03-17
打赏
举报
回复
我对这个问题也去研究过,不知道有没有研究透;
你如果配置了事务,它会对session的开启关闭进行管理,不需要你手工完成,session的开启关闭应该是在Service层的,你service里的方法有可能涉及到两次或者多次对数据库进行操作,完全可以共享同一个session,不需要每次对数据库操作都创建一个新的session
fulianglove
2008-03-17
打赏
举报
回复
session不是线程安全的,每个线程维护个session,至于什么时候创建好像是有个属性来设置的,不过我忘了。。。。。
spring
+
hibernate
配置
多个数据源过程 以及
spring
中数据源的
配置
方式
spring
+
hibernate
配置
多个数据源过程 以及
spring
中数据源的
配置
方式
spring
+
hibernate
配置
多个数据源过程 以及
spring
中数据源的
配置
方式【部分内容转载】 2018年03月27日 18:58:41 守望dfdfdf 阅读数:62更...
Spring
使用
Hibernate
事务
管理
:update等操作无效果问题
使用
Spring
事务
管理
需要使用getCurrentSession获取session 在操作中不要显示的关闭session 不需要进行编码式
事务
,使用声明式
事务
实际问题: 经常会遇到
事务
管理
使用
hibernate
时,在调用update方法时,数据返回...
Struts2+
Spring
+
Hibernate
搭建全解!
Struts2+
Spring
+
Hibernate
是J2EE的最新流行框架。本篇是我搭建这个框架的经验总结,有很多人搭建这个框架总会遇到 大大小小的问题,网上也没有什么行之有效的方案或成体系的介绍,所以我就决定总结一下我的搭建过程...
Spring
事务
中read-only在
Hibernate
中的
疑惑
解析
Spring
supports the concept of read-only transactions. Because
Spring
doesn’t provide persistence functionality itself, the semantics of read-only transactions depend on the underlying persistence ...
hibernate
事务
mysql_创建
hibernate
事务
Hibernate
初识简介相信学过SSH2框架的同学们对Hiberate一点也不陌生。
Hibernate
是Gavin King于2001年开始,作为EJB2风格实体bean的替代品开发的对象关系映射工具。
Hibernate
是一个开源,轻量级的ORM(对象关系映射)...
Java EE
67,515
社区成员
225,878
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章