bboss persistent事务管理介绍 (九)

简介:       事务控制规则 根据实际情况事务控制规则划分为: 1.         不带参数方法   说明:指定需要控制事务的方法为testTXInvoke,这里没有声明事务类型,默认的事务类型为REQUIRED_TRANSACTION      在这种规则下一旦方法执行时向外抛出异常,则会导致事务回滚,如果方法正常结束则事务提交。

      事务控制规则

根据实际情况事务控制规则划分为:

1.         不带参数方法

 <method name="testTXInvoke"/>

说明:指定需要控制事务的方法为testTXInvoke,这里没有声明事务类型,默认的事务类型为REQUIRED_TRANSACTION

     在这种规则下一旦方法执行时向外抛出异常,则会导致事务回滚,如果方法正常结束则事务提交。如果声明了回滚异常规则,则按照回滚异常规则控制事务的回滚和提交。

 

2.         带参数事务方法,只声明需要进行事务控制的方法信息,包括方法的名称和方法参数

<method name="testTXInvoke">

    <param type="java.lang.String"/>

</method>

说明:指定需要控制事务的方法为testTXInvoke,并且方法的带一个String类型的参数,这里没有声明事务类型,默认的事务类型为REQUIRED_TRANSACTION

     在这种规则下一旦方法执行时向外抛出异常,则会导致事务回滚,如果方法正常结束则事务提交。如果声明了回滚异常规则,则按照回滚异常规则控制事务的回滚和提交。

     如果参数为数组时,需要配置paramtype属性需要指定为特定类型的数组类型名称,比如字符串数组类型为:[Ljava.lang.String;

 

3.         指定事务类型规则      

<method name="testTXInvoke" txtype="REQUIRED_TRANSACTION">

    <param type="java.lang.String"/>

</method>

说明:指定需要控制事务的方法为testTXInvoke,并且方法的带一个String类型的参数,同时通过txtype属性明确地将事务类型指定为

REQUIRED_TRANSACTION

Txtype属性的取值范围如下,具体的含义参考【4.9.2】节:

NEW_TRANSACTION

                  REQUIRED_TRANSACTION

                  MAYBE_TRANSACTION

      NO_TRANSACTION

在这种规则下一旦方法执行时向外抛出异常,则会导致事务回滚,如果方法正常结束则事务提交。如果声明了回滚异常规则,则按照回滚异常规则控制事务的回滚和提交。

 

4.         通过模式指定控制事务的方法范围

<method pattern="testPatternTX[1-9.]*"

txtype="REQUIRED_TRANSACTION">

    <param type="java.lang.String"/>

</method>

       说明:通过pattern属性指定了一个模式testPatternTX[1-9.]*,表示以testPatternTX开头的所有方法都需要控制事务

             Name属性和pattern属性只能设定一个,如果同时设定了两个属性,则只有pattern生效,name无效。

             在这种规则下一旦方法执行时向外抛出异常,则会导致事务回滚,如果方法正常结束则事务提交。如果声明了回滚异常规则,则按照回滚异常规则控制事务的回滚和提交。

 

5.      指定事务的回滚异常

<method name="testSystemException">   

              <rollbackexceptions>

                  <exception class="com.chinacreator.spi.transaction.RollbackInstanceofException"

                  type="IMPLEMENTS"/>

              </rollbackexceptions>

</method>

或者

<method name="testSystemException">   

              <rollbackexceptions>

                  <exception class="com.chinacreator.spi.transaction.RollbackInstanceofException"

                  type="INSTANCEOF"/>

              </rollbackexceptions>

</method>

 

说明:声明事务方法时,可以通过rollbackexceptionsexception元素指定方

法事务回滚的异常信息,包括异常名称,异常的范围类型:IMPLEMENTSINSTANCEOF。异常名称通过class属性执行,范围类型通过type属性指定,只能设置IMPLEMENTSINSTANCEOF这两个值。IMPLEMENTS类型指异常只能是异常本身的对象,其子类不属于回滚异常,INSTANCEOF类型指异常本身和其子类都属于回滚异常。

除了指定的回滚异常需要回滚事务外,如果抛出的异常是系统级别的异常,即使这些异常没有进行声明,也会导致事务回滚。系统级别的异常是指以下几种异常:

java.lang.RuntimeException及其子类

java.lang.Error及其子类

另外以下几种异常也是默认回滚事务的异常:

java.sql.SQLException

javax.transaction.RollbackException

com.frameworkset.orm.transaction.TransactionException

目录
相关文章
|
7月前
|
XML Java 关系型数据库
注解驱动事务:Spring中基于注解的事务属性配置详解
注解驱动事务:Spring中基于注解的事务属性配置详解
113 0
注解驱动事务:Spring中基于注解的事务属性配置详解
|
Java 应用服务中间件
Spring JTA事务配置JOTM
JTA可以在多个数据库上使用一个事务,weblogic等应用服务器提供了jta数据源的支持,可以直接被使用。但是tomcat本身并不支持这种特性。如果想在tomcat上使用jta就必须使用其它的工具。jotm就是一个独立的可以提供JTA功能的组件。 &lt;?xml version="1.0" encoding="UTF-8"?&gt;      &lt;beans xmlns="http
1386 0
|
SQL Java API
bboss持久层ormaping机制详解
bboss持久层针对db操作即提供了原始sql语句的支持,又提供了简单而高效的ormapping机制,本文详细介绍之 1.可变参数的原生sql API 删除 SQLExecutor.delete("delete from LISTBEAN"); SQLExecutor.
827 0
|
SQL 缓存 自然语言处理
bboss 持久层重大改进
bboss 持久层重大改进。 bboss持久层最大特色就是其对动态sql语句的良好支持,这个机制是基于velocity模板引擎的来实现的: Velocity.evaluate(context, out, sqlName, sql); Velocity.evaluate这个方法存在一个非常严重的性能隐患,那就是这个方法没有对解析出来的sql模板语法结构树做任何的缓存机制,每次都会硬解析sql语句,并且在解析sql语句时会向velocity的模板解析器池中获取一个池化的解析器,这样在高并发情况下会频繁地获取解析其池的共享锁,导致系统性能下降。
903 0
bboss持久层事务管理组件TransactionManager增加两个release方法
bboss持久层事务管理组件TransactionManager增加release和releasenolog两个方法,可以在finally块中调用它们来释放事务资源,使得bboss持久层框架的编程事务管理变得更加优雅、更加轻松。
730 0
|
人工智能 测试技术 数据格式
bboss-persistent结合bboss-aop实现注解事务
bboss-persistent结合bboss-aop也可以实现注解事务哦. 先看一个业务组件: package org.frameworkset.spi.transaction.annotation; import java.
624 0
bboss persistent事务管理介绍 (八)
                                                                                                                          ...
712 0
|
数据库
bboss persistent事务管理介绍 (三)
2.事务挂起处理-【开始】>【挂起】>【恢复】>【提交】>【回滚】               TransactionManager tm = new TransactionManager();               try {            //开始事务,在...
653 0
bboss persistent事务管理介绍 (七)
bboss persistent事务管理介绍 (七)   l        配置步骤 从上述的语法当中可以看出,要声明一个业务组件的事务方法的步骤为: 第一步 准备好业务组件,参考下面的模型 第二步 在配置文件中配置一个管理服务,也就是添加一个manager元素(...
620 0