HibernateTemplate中有事务管理吗?

KG071 2011-10-23 01:08:57
在spring配置文件中配置了HiberanteTemplate,如果没有配置事务,那么在java代码中调用hibernateTemplate.save()等方法时是不是需要自己手动写transaction.begin(),transaction.commit()方法呢?
...全文
784 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaoyong7 2013-09-09
  • 打赏
  • 举报
回复
。。 放在service是因为sevice可能管理多个dao,,每个dao都是独立在每个session,如果不在XML加事务管理,,就有可能某个dao完成了。。但是某个dao又回滚了,,主要就是要保证各个dao在同个事务中,要么一起执行,,要么一起回滚
codinghom 2012-07-28
  • 打赏
  • 举报
回复
你好可爱哈哈
leecyz 2011-10-25
  • 打赏
  • 举报
回复
HibernateTemplate自身不具有事务,只是简单封了一下session。
session在处理事务时begin/commit是对JDBC的封装,都可以看源码。

HibernateTemplate中事务的处理如下

getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
session.connection().setAutoCommit(false);

Student stu1=new Student();
stu1.setName("aaaa");
session.save(stu1);

Student stu2 = new Student();
session.save(stu2);

session.flush();//向数据库发送sql
session.connection().commit();
return null;
}
});


kevinmy 2011-10-24
  • 打赏
  • 举报
回复
同样的问题啊 我也在学spring
KG071 2011-10-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 handsome_huxiulei 的回复:]

HibernateTemplate 内部自己有对事务进行处理


xml中配置事务 一般放到service层,也有极少数人放到dao层的, 大师们都建议service层,事务本来就是用来管理业务的,,,
[/Quote]

既然HibernateTemplate 内部自己有对事务进行处理 为什么还需要在xml中配置transaction呢? 这有什么作用?
KG071 2011-10-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ioe_gaoyong 的回复:]

你问的问题是什么,是HibernateTemplate有没有事务管理,答案就是 是或否

你刚刚问的是什么,是XML的事务配置在哪一层,你说这是一个问题么?

引用 9 楼 kg071 的回复:

引用 8 楼 ioe_gaoyong 的回复:

这个跟这个帖子的问题已经十万八千里了,这样问下去没完没了了

如果这个帖子的问题你清楚了就结贴吧,这个问题另开一个帖子
引用 7……
[/Quote]

好吧 你赢了 佩服!
handsome_huxiulei 2011-10-23
  • 打赏
  • 举报
回复
HibernateTemplate 内部自己有对事务进行处理


xml中配置事务 一般放到service层,也有极少数人放到dao层的, 大师们都建议service层,事务本来就是用来管理业务的,,,
风尘中国 2011-10-23
  • 打赏
  • 举报
回复
你问的问题是什么,是HibernateTemplate有没有事务管理,答案就是 是或否

你刚刚问的是什么,是XML的事务配置在哪一层,你说这是一个问题么?

[Quote=引用 9 楼 kg071 的回复:]

引用 8 楼 ioe_gaoyong 的回复:

这个跟这个帖子的问题已经十万八千里了,这样问下去没完没了了

如果这个帖子的问题你清楚了就结贴吧,这个问题另开一个帖子
引用 7 楼 kg071 的回复:

引用 4 楼 ioe_gaoyong 的回复:

实现了啊,刚刚不是就是说了这个意思么

引用 3 楼 kg071 的回复:

引用 1 楼 ioe_gaoyong……
[/Quote]
KG071 2011-10-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ioe_gaoyong 的回复:]

这个跟这个帖子的问题已经十万八千里了,这样问下去没完没了了

如果这个帖子的问题你清楚了就结贴吧,这个问题另开一个帖子
引用 7 楼 kg071 的回复:

引用 4 楼 ioe_gaoyong 的回复:

实现了啊,刚刚不是就是说了这个意思么

引用 3 楼 kg071 的回复:

引用 1 楼 ioe_gaoyong 的回复:

spring容器的AOP机制自己给你……
[/Quote]

这哪里是两个问题?跟不上你的思维
风尘中国 2011-10-23
  • 打赏
  • 举报
回复
这个跟这个帖子的问题已经十万八千里了,这样问下去没完没了了

如果这个帖子的问题你清楚了就结贴吧,这个问题另开一个帖子
[Quote=引用 7 楼 kg071 的回复:]

引用 4 楼 ioe_gaoyong 的回复:

实现了啊,刚刚不是就是说了这个意思么

引用 3 楼 kg071 的回复:

引用 1 楼 ioe_gaoyong 的回复:

spring容器的AOP机制自己给你添加了事务的管理,所以不用你手动写transaction.begin(),transaction.commit()就可以实现一样的效果,你自己可以实验一下


我……
[/Quote]
KG071 2011-10-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ioe_gaoyong 的回复:]

实现了啊,刚刚不是就是说了这个意思么

引用 3 楼 kg071 的回复:

引用 1 楼 ioe_gaoyong 的回复:

spring容器的AOP机制自己给你添加了事务的管理,所以不用你手动写transaction.begin(),transaction.commit()就可以实现一样的效果,你自己可以实验一下


我是说spring没有配置transaction,如果配……
[/Quote]


是不是在xml中配置事务边界就放到service层,不配置则在dao层?
KG071 2011-10-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ioe_gaoyong 的回复:]

实现了啊,刚刚不是就是说了这个意思么

引用 3 楼 kg071 的回复:

引用 1 楼 ioe_gaoyong 的回复:

spring容器的AOP机制自己给你添加了事务的管理,所以不用你手动写transaction.begin(),transaction.commit()就可以实现一样的效果,你自己可以实验一下


我是说spring没有配置transaction,如果配……
[/Quote]

那绝大部分情况下为什么还需呀在xml中配置transaction呢?
KG071 2011-10-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fly_m 的回复:]

hibernateTemplate的各个模版方法,已经调用了相对应的session.commit方法,这个你可以看相应的源代码。
不过现在已经不推荐使用template,而建议直接使用sessionFactory.getCurrentSession().save(obj)了
[/Quote]

不是很懂 我说的是tranSaction,没有事务也可以commit吧?请指点
风尘中国 2011-10-23
  • 打赏
  • 举报
回复
实现了啊,刚刚不是就是说了这个意思么

[Quote=引用 3 楼 kg071 的回复:]

引用 1 楼 ioe_gaoyong 的回复:

spring容器的AOP机制自己给你添加了事务的管理,所以不用你手动写transaction.begin(),transaction.commit()就可以实现一样的效果,你自己可以实验一下


我是说spring没有配置transaction,如果配置了当然可以。我想知道HibernateTemplate是不是在自己的代码中就实现了事……
[/Quote]
KG071 2011-10-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ioe_gaoyong 的回复:]

spring容器的AOP机制自己给你添加了事务的管理,所以不用你手动写transaction.begin(),transaction.commit()就可以实现一样的效果,你自己可以实验一下
[/Quote]

我是说spring没有配置transaction,如果配置了当然可以。我想知道HibernateTemplate是不是在自己的代码中就实现了事务
Fly_m 2011-10-23
  • 打赏
  • 举报
回复
hibernateTemplate的各个模版方法,已经调用了相对应的session.commit方法,这个你可以看相应的源代码。
不过现在已经不推荐使用template,而建议直接使用sessionFactory.getCurrentSession().save(obj)了
风尘中国 2011-10-23
  • 打赏
  • 举报
回复
spring容器的AOP机制自己给你添加了事务的管理,所以不用你手动写transaction.begin(),transaction.commit()就可以实现一样的效果,你自己可以实验一下

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧