马可波罗的梦乡

BlogJava 首页 新随笔 联系 聚合 管理
  4 Posts :: 50 Stories :: 2 Comments :: 0 Trackbacks
要辨别事务的边界。就是启动事务和提交事务的边界。 DAO对象的每个方法都对应于一些数据库操作。如果需要把两个或更多个方法作为一个事务,则需要在更高的层次定义事务

Spring的一个好处是为事务提供了一个统一的抽象,不论底层是用什么实现,如Hibernate, IBatis或者JDBC,都可以使用一个统一的接口。
如果用Spring来管理Hibernate事务,最好不要直接使用Hibernate事务接口,因为这会造成混乱。如果使用Spring来管理Hibernate事务,那么就调用Spring的接口。

事务中获取的Connection必须是和事务关联的那个Connection,不能直接调用DataSource的getConnection,如果得到的是不同的Connection,是无法实现事务的。因此,最好调用Spring的事务工具类。

事务管理器,事务状态,事务发起,事务提交,事务回滚等。
Spring事务,对系统性能的影响有多大,那些更复杂的分布式事务如何处理,如何衡量它的性能损耗呢?

JTS是底层接口,JTA是高层接口。
JDBC事务是局部事务,只能应用于当前数据库。如果事务跨多个数据库,就必须使用分布式事务。这个时候可以采用JTA。
JTA事务,涉及一个事务管理器和多个资源管理器。资源管理器可以是任何持久性数据存储系统,包括数据库系统、MIS系统、JMS等。

JDBC驱动只有实现了XAConnection和XAResource接口才能参与JTA事务。但是一些高级JavaEE服务器可以将普通JDBC驱动模拟为支持XA的JDBC驱动,这个模拟过程是如何完成的?

XAConnection和JDBC Connection的事务操作是不同的,它绝不能自动提交,也绝不能调用XAConnection的commit和rollback方法,只能调用UserTransaction对象的begin,rollback和commit方法如何看其底层实现机制。或者没有必要。

如果只有单个数据库,使用JTA会带来不必要的复杂性。不过对于Spring来说,使用哪种事务已经不重要了,因为它定义了一个统一的抽象事务编程模型。并配合声明式事务,选择JDBC事务,还是JTA事务,所需要做的,仅仅是修改配置文件。 一般不会涉及代码的修改,这是Spring的优秀功能之一。

事务的隔离级别是由底层数据库实现的。而事务的传播行为这是应用程序自己管理的

posted on 2009-08-05 03:37 梦回唐朝 阅读(203) 评论(0)  编辑  收藏 所属分类: Spring

只有注册用户登录后才能发表评论。


网站导航: