hibernate和spring事物管理的疑惑?

hibernate和spring都对事物进行了管理,强烈想知道hibernate和spring之间的事物又是怎么管理的呢,它们之间有什么级别的操作吗?

1、Hibernate:
a、在我们执行一条sql语句:
insert into a(id ,name) valus(1,'张三');[code="java"][/code]
假于该语句是在数据库中直接执行,那么可以立刻将该条记录插于数据库。
但此时我们是在程序中执行该语句的,精确的将是在java语言中执行该sql语句。
java语言不能直接连接数据库,我们是通过jdbc连接数据库的
1,jdbc连接数据库默认是不立即将数据插入数据库,只用当你commit后才将数据插入数据库;
2,根据1所以在程序中我们要认为的执行commit ,这样数据才真正插于数据,同时如果一个方法里面有多条sql语句,其中一条出现错误,那么久需要回滚了。

从上面可以看出来在java程序中人为控制事物是一件很繁琐的事情。同理,hiberante也是这样,执行完成sql语句后需要提交commit。

此时我们就会想,可不可有个工具自动帮我们管理事物?

2.spring:
由于人为控制hibernate事物很繁琐,所以我们将事物交给了spring统一管理。但是spring也不是万能的,你要告诉他们不同的方法,该使用这样的事物
如是出现了:save,del,update等开头的方法使用一个事物,以:query,select,get等开发的方法又使用的一个事物。

大概意识就这样,想详细了解 事件,先了解数据库事务,再根据你系统需要那个级别的事务,来具体设置程序的事务级别!

[quote]hibernate和spring都对事物进行了管[/quote]
这样说是不对的, hibernate与spring集成后,是由spring来管理事务的。spring提供了声明式事务管理、注解式事务管事等多种事务管理方法。

理解spring管理的事务,要理解两个概念:
1 事务的传播属性
2 数据库的隔离级别
网上很多, 自己找找吧。

曾经我也被这个问题困扰过,不过早就想清楚了。
首先要了解事务的原子性概念,
其次要了解hibernate事务只是针对库表级别的事务。
而spring事务是针对业务逻辑层的事务。

按正常逻辑分析spring事务要管理hibernate事务,
在调用事务时也可以绕开spring事务,直接调用hibernate事务。
以确保业务的实现。
建议hibernate事务独立存在、并归并在spring事务中。

论坛里已经有好几个分析spring事务管理的精华文章

http://www.iteye.com/topic/78674

http://www.iteye.com/topic/515634

http://www.iteye.com/forums/good/Java?urlname=Spring