bboss persistent事务管理介绍 (七)

简介: bboss persistent事务管理介绍 (七)   l        配置步骤 从上述的语法当中可以看出,要声明一个业务组件的事务方法的步骤为: 第一步 准备好业务组件,参考下面的模型 第二步 在配置文件中配置一个管理服务,也就是添加一个manager元素(...

bboss persistent事务管理介绍 (七)

 

l        配置步骤

从上述的语法当中可以看出,要声明一个业务组件的事务方法的步骤为:

第一步 准备好业务组件,参考下面的模型

第二步 在配置文件中配置一个管理服务,也就是添加一个manager元素(指定管理服务的惟一标识id属性,是否单实例singlable属性)

第三步 manager中配置一个或者多个provider(管理服务提供者,每个管理服务提供者需要指定自己的type属性,以及具体的实现类class

第四步 transactions元素中使用method元素、rollbackexcepiton元素、exception元素、param元素声明所有需要进行事务控制的方法以及控制事务的规则。

l        配置示例

<manager-config>

    <manager id="tx.a" singlable="false" >

       <!--

           属性描述:

           type:代表数据存储的类型,例如DBLDAP,ACTIVEDIRECTORY等等

           default:缺省实现,不管used是否指定都会在同步方法中调用

           class:实现类代码

           used:标识是否使用,默认为false

       -->

       <provider type="DB" default="true"

           class="com.chinacreator.spi.transaction.A1" />

   

       <!-- 

           在下面的节点对provider的业务方法事务进行定义

           只要将需要进行事务控制的方法配置在transactions中即可

          

       -->

       <transactions>

           <!--

              定义需要进行事务控制的方法

              属性说明:

              name-方法名称,可以是一个正则表达式,正则表达式的语法请参考jakarta-oro的相关文档,如果使用

              正则表达式的情况时,则方法中声明的方法参数将被忽略,但是回滚异常有效。

              pattern-方法名称的正则表达式匹配模式,通常匹配

              txtype-需要控制的事务类型,取值范围:

              NEW_TRANSACTION

              REQUIRED_TRANSACTION

              MAYBE_TRANSACTION

              NO_TRANSACTION

           -->

           <!--

           模式匹配,模式匹配的顺序受配置位置的影响,如果配置在后面或者中间,那么会先执行之前的方法匹配,如果匹配上了就不会

           对该模式方法进行匹配了,否则执行匹配操作。

      

           如果匹配上特定的方法名称,那么这个方法就是需要进行同步的方法

           模式testInt.*匹配接口中以testInt开头的任何方法

            -->

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

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

           </method>        

          

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

          

           <method name="testTXInvokeWithReturn" txtype="REQUIRED_TRANSACTION"/>

          

           <method name="testTXInvokeWithException" txtype="MAYBE_TRANSACTION"/>    

          

           <method name="testSameName" txtype="NO_TRANSACTION"/>

          

           <method name="testSameName1">

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

           </method>

           <!--              

                  定义使事务回滚的异常,如果没有明确声明需要回滚事务的异常,那么当有异常发生时,事务管理框架将自动回滚当前事务

                  class-异常的完整类路径

                  type-是否检测类型异常的子类控制标识,

                  IMPLEMENTS只检测异常类本身,忽略异常类的子类;

                  INSTANCEOF检查异常类本省及其所有子类

                 

              -->

 

 

 

 

目录
相关文章
|
Java 数据库 容器
Spring整合JMS(四)——事务管理
  Spring提供了一个JmsTransactionManager用于对JMS ConnectionFactory做事务管理。这将允许JMS应用利用Spring的事务管理特性。JmsTransactionManager在执行本地资源事务管理时将从指定的ConnectionFactory绑定一个ConnectionFactory/Session这样的配对到线程中。
1227 0
|
SQL Java API
bboss持久层ormaping机制详解
bboss持久层针对db操作即提供了原始sql语句的支持,又提供了简单而高效的ormapping机制,本文详细介绍之 1.可变参数的原生sql API 删除 SQLExecutor.delete("delete from LISTBEAN"); SQLExecutor.
836 0
|
SQL 缓存 自然语言处理
bboss 持久层重大改进
bboss 持久层重大改进。 bboss持久层最大特色就是其对动态sql语句的良好支持,这个机制是基于velocity模板引擎的来实现的: Velocity.evaluate(context, out, sqlName, sql); Velocity.evaluate这个方法存在一个非常严重的性能隐患,那就是这个方法没有对解析出来的sql模板语法结构树做任何的缓存机制,每次都会硬解析sql语句,并且在解析sql语句时会向velocity的模板解析器池中获取一个池化的解析器,这样在高并发情况下会频繁地获取解析其池的共享锁,导致系统性能下降。
905 0
|
数据库 数据格式 XML
bboss多数据库事务管理
本文以一个简单的实例来介绍bbossgroups中持久层框架如何实现多数据库事务: @Test public void testMutiDBTX() { TransactionManager tm = new TransactionManager(); try { tm.
627 0
|
人工智能 测试技术 数据格式
bboss-persistent结合bboss-aop实现注解事务
bboss-persistent结合bboss-aop也可以实现注解事务哦. 先看一个业务组件: package org.frameworkset.spi.transaction.annotation; import java.
629 0
|
SQL 数据库 Java
bboss persistent 实现数据库更新操作
4.5 更新操作代码段    4.5.1预编译更新操作        PreparedDBUtil preDBUtil = new PreparedDBUtil();        int pk = 0;        String sqlstr = "update OFFICE_...
590 0
|
SQL 关系型数据库 MySQL
关于bboss persistent主键生成机制的说明
4.14 主键的生成 bboss主键生成有两种模式,一种模式是在对象主键属性上加@PrimaryKey(uuid主键)或者@PrimaryKey(auto=true,pkname="xxxx")(pkname对应tableinfo中的TABLE_NAME子字段的值),另外一种模式就是通过DBUtil.getNextPrimaryKey方法再程序中获取(前提是表的主键信息需要配置到tableinfo中,可以支持uuid和oracle的sequence,以及mysql的自定义sequence)。
1046 0
|
数据库
bboss persistent事务管理介绍 (四)
l       不带返回值的模板方法使用实例   TemplateDBUtil.executeTemplate(               new JDBCTemplate(){                   /**                    * 整个e...
649 0
|
数据库
bboss persistent事务管理介绍 (三)
2.事务挂起处理-【开始】>【挂起】>【恢复】>【提交】>【回滚】               TransactionManager tm = new TransactionManager();               try {            //开始事务,在...
656 0
|
数据库 Go
bboss persistent事务管理介绍 (五)
l       带返回值的模板方法使用实例   Object ret = TemplateDBUtil.executeTemplate(               new JDBCValueTemplate(){                   /**        ...
644 0