《Spring中事务.doc》由会员分享,可在线阅读,更多相关《Spring中事务.doc(11页珍藏版)》请在金锄头文库上搜索。
1、广州java培训 详细请上:http:/Spring2.0中声明式事务管理一、事务具有四个特性:1. 原子性:一个事务中所有对数据库的操作是一个不可分割的操作序列。这些操作要么完整的被全部执行,要么一步也不做。是一个逻辑工作单位。2. 一致性:一个事务独立执行的结果将保持一致性,即数据不会因为事务的执行而遭受破坏。3. 隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。4. 持久性:一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作故障不应该对其执行结果有任何影响。二.事务隔离级别 1、
2、Serializable:最严格的级别,事务串行执行,资源消耗最大;2、REPEATABLE READ:保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了“脏读取”和“不可重复读取”的情况,但是带来了更多的性能损失。3、READ COMMITTED:大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”。该级别适用于大多数系统。4、Read Uncommitted:保证了读取过程中不会读取到非法数据。三、传播行为Propagation (传播行为定义了关于客户端和被调用方法的事务边界):PROPAGATION_REQUI
3、RED -支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 PROPAGATION_SUPPORTS -支持当前事务,如果当前没有事务,就以非事务方式执行。 PROPAGATION_MANDATORY -支持当前事务,如果当前没有事务,就抛出异常。 PROPAGATION_REQUIRES_NEW -新建事务,如果当前存在事务,把当前事务挂起。 PROPAGATION_NOT_SUPPORTED -以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 PROPAGATION_NEVER -以非事务方式执行,如果当前存在事务,则抛出异常。 PROPAGATION_NEST
4、ED -是Spring所提供的一个特殊变量。它要求事务管理器或者使用JDBC 3.0 Savepoint API提供嵌套事务行为(如Spring的DataSourceTransactionManager),或者通过JTA支持嵌套事务。四、readOnly事务属性中的readOnly标志表示对应的事务应该被最优化为只读事务。这是一个最优化提示。在一些情况下,一些事务策略能够起到显著的最优化效果,例如在使用Object/Relational映射工具(如:Hibernate或TopLink)时避免dirty checking(试图“刷新”)。五、Timeout在事务属性中还有定义“timeout”值
5、的选项,指定事务超时为几秒。在JTA中,这将被简单地传递到J2EE服务器的事务协调程序,并据此得到相应的解释。 有关的设置属性是否需要?默认值描述name是与事务属性关联的方法名。通配符(*)可以用来指定一批关联到相同的事务属性的方法。 如:get*、handle*、on*Event等等。 propagation不REQUIRED事务传播行为isolation不DEFAULT事务隔离级别timeout不-1事务超时的时间(以秒为单位)read-only不false事务是否只读?rollback-for不将被触发进行回滚的 Exception(s);以逗号分开。 如:com.foo.MyBusi
6、nessException,ServletException no-rollback-for不不 被触发进行回滚的 Exception(s);以逗号分开。 如:com.foo.MyBusinessException,ServletException Spring 2.0的事务声明配置关键步骤1加入Spring 2.0AOP的库2.导入Spring支持Hibernate全部的库:3.执行Hibernate反转向导,给生成的DAO生成IDAO接口4.修改Spring配置文件 4-1.增加命名空间4-2可选:修改配置,关闭自动提交4-3.增加被管bean: HibernateTransactionManager4-4.增加: advice4-5.增加: pointcut 和 advisor配置5.手动调用:IBiz biz= biz.getFromApplicationContext();6.注:必须返回接口,否则抛ClassCastExceptionpublic class DAO extends HibernateDaoSupport implements IDAO