对SPRING事务的困惑

              
edison87915
11-11-23 2 660 1

对SPRING的事务控制的理解仅出于之前对数据库中事务的理解,即将一些原子操作捆绑成一个大的原子操作,这一堆操作,要么同时成功完成,要么都失败。

但是对SPRING的事务控制有一些疑惑:

1. 我的理解,从SPRING的事务管理这个称呼上看,肯定至少对数据库的操作(DML语句)能起到事务控制的作用,我想知道SPRING的事务控制能不能对文件操作(比如:写文件)起到事务控制的作

用呢?比如某一个事务中有写文件的操作,假如写入操作后发生了异常,请问能将文件状态回滚到写文件操作之前的状态吗。

2. 接着问题1,我想知道SPRING的事务管理,对CREATE TABLE 这种DDL语句能起到事务控制的作用吗,(在数据库的事务中,遇到DDL语句自动提交事务),就是说:某一个事务中假如有CREATE

TABLE操作,假如之一发生了异常,请问能将数据库回滚到CREATE TABLE 之前的状态吗

3. 联想到COMMAND模式(了解一点点),据说对于“需要撤消操作”的需求很是适合,比如WORD中的Ctrl+Z功能,因为COMMAND模式可以保存各个操作步骤的状态,可以将状态在各个操作步骤中轮

回,感觉挺像事务控制啊。。。SPRING的事务控制也是类似于这种COMMAND模式的思想吗?能保存每个操作步骤的状态信息。这个很关键,我想知道SPRING所控制的事务中,为该事务保存的状态,粒度小

到什么程度啊?"给一个变量赋值"这种操作,也可以被回滚吗?

对于SPRING的事务管理没有真正实战过,只是看过些文章和相关配置。。。可能是比较二的问题,谢谢大师们指导!!感谢

1
banq
2011-11-24 07:57

Spring只是提供事务和应用程序的结合方式。事务分JTA和JDBC两种,与Spring无关。

JDBC事务是一个JDBC连接之间的事务,使用数据库的ACID。

JTA事务是针对资源resource的事务,Resource包括:
1.relational databases use JDBC
2.messaging services use JMS
3.generalized EIS (Enterprise Information System) resources use Java EE connector API.

JTA事务开始时,有一个TP monitor,如果这些资源操作失败,其他资源都可以回滚。

如果你想把文件纳入JTA事务,使用 JCA connector把你的文件作为资源来操作:http://stackoverflow.com/questions/2422603/how-to-manage-transaction-for-database-and-file-system-in-jee-environment

edison87915
2011-11-24 19:32

谢谢banq,看来马上要学习一下JTA相关的东西了。。。搞JAVA工作有快一年了。。JTA在我脑子里直接没有概念。。是不是太菜了,呵呵,学习了,感谢