`

bboss多数据库事务管理

阅读更多
本文以一个简单的实例来介绍bbossgroups中持久层框架如何实现多数据库事务:
@Test
	public void testMutiDBTX()
	{
		TransactionManager tm =  new TransactionManager();
		try
		{
			tm.begin();
			SQLExecutor.deleteWithDBName("bspf","delete from table1 where id=1");
			SQLExecutor.updateWithDBName("query","update table1 set value='test' where id=1");
			tm.commit();
			DBUtil.debugStatus();//debug连接池实时状态
		}
		catch(Exception e)
		{
			
		}
		finally
		{
			tm.release();
		}

	}
    
}


这个示例展示的在两个数据源(数据源名称为bspf和query)上分别执行一个delete操作和一个删除操作,通过TransactionManager事务管理组件来控制两个操作的事务,从而保证两个数据源事务的一致性,也就是说在bspf和query两个数据源上的操作都包含在一个事务中,这就是所谓的多数据库事务。

另外还可以支持嵌套的事务处理,例如:



@Test
	public void testNestedMutiDBTX()
	{
		TransactionManager tm =  new TransactionManager();
		try
		{
			tm.begin();
			SQLExecutor.deleteWithDBName("bspf","delete from table1 where id=1");
			SQLExecutor.updateWithDBName("query","update table1 set value='test' where id=1");
			testMutiDBButSampleDatabaseTX();
			tm.commit();
			DBUtil.debugStatus();//debug连接池实时状态
		}
		catch(Exception e)
		{
			
		}
		finally
		{
			tm.release();
		}

	}
	@Test
	public void testMutiDBButSampleDatabaseTX()
	{
		TransactionManager tm =  new TransactionManager();
		try
		{
			tm.begin();
			SQLExecutor.deleteWithDBName("bspf","delete from table1 where id=1");
			SQLExecutor.updateWithDBName("mq","update table1 set value='test' where id=1");
			tm.commit();
			DBUtil.debugStatus();//debug连接池实时状态
		}
		catch(Exception e)
		{
			
		}
		finally
		{
			tm.release();
		}
		DBUtil.debugStatus();;//debug连接池实时状态

	}


bspf和query两个数据源的配置(poolman.xml):

<?xml version="1.0" encoding="utf-8"?>
<poolman>
    
    <datasource>
        <dbname>bspf</dbname>
        <loadmetadata>false</loadmetadata>
      ......
    </datasource>
    <datasource>
        <dbname>query</dbname>
        。。。。。
    </datasource>
</poolman>


详细的配置请参考:
bbossgroups持久层框架数据源配置文件实例
分享到:
评论
2 楼 yin_bp 2010-10-19  
凤舞凰扬 写道
   真没看懂你的例子想说明什么,这完全就是最基本的JTA的应用,而且还根本没有到XA的级别。
    应该还是要多了解分布式事务先。

例子简单明了,就是使用DBUtil操作不同的数据库,然后把这些操作都包含在同一个数据库事务中,这里的不同的数据是通过例如executeDelete的操作中的第一个参数指定的:
   db.executeDelete("bspf","delete from table2 where id=1");  
   db.executeUpdate("query","update table2 set value='test' where id=1");  


分别为bspf和query两个datasource,具体的配置对应于文章后面的poolman.xml中的两个数据库连接池。

凤舞凰扬指出没有到XA级别,确实这里只是bbosspersistent框架中提供的一个单纯数据库的多事务管理功能,没有涵盖其他比如jms或者第三方工作流系统事务的分布式事务体制,这个问题目前正在构思实现中,还请各位大拿多多指教啊。
1 楼 凤舞凰扬 2010-10-18  
   真没看懂你的例子想说明什么,这完全就是最基本的JTA的应用,而且还根本没有到XA的级别。
    应该还是要多了解分布式事务先。

相关推荐

    bboss mvcdemo 下载地址

    4. **AOP(面向切面编程)**:BBoss MVCDemo支持AOP,可以实现如事务管理、日志记录、权限控制等功能,提高代码的复用性和可维护性。 5. **国际化与本地化**:框架内置了国际化和本地化支持,使得应用可以根据用户...

    企业级J2EE开源框架bboss

    2. **数据库操作**:BBoss提供了便捷的数据访问层(DAO),支持SQL动态生成、事务管理以及多种数据库的兼容性,使得数据库操作变得简单且高效。 3. **服务治理**:框架内置了服务注册与发现机制,可以实现微服务...

    bboss-db-elasticsearch-tool-master_java_

    1. **事务管理**:支持数据库的ACID(原子性、一致性、隔离性、持久性)特性,确保数据的一致性和完整性。 2. **缓存机制**:提供缓存策略,减少对数据库的直接访问,提高性能。 3. **批量操作**:支持数据的批量...

    bboss persistent 1.0.2中方便地实现大字段(clob,blob)的处理

    3. **事务管理**:在TestTransaction.sql这个文件名中,我们可以推测BBoss Persistent也包含了事务管理功能。在处理CLOB和BLOB数据时,事务是至关重要的,因为它们确保了数据的一致性和完整性。如果在操作过程中发生...

    bboss elasticsearch-5.7.8.rar

    3. `bboss-util-5.5.0.jar`和`bboss-persistent-5.5.0.jar`:这是BBoss框架的核心组件,提供了许多实用工具类和持久化操作支持,如数据库连接、事务管理等,为Elasticsearch的数据导入提供底层支持。 4. `...

    bboss+es基本操作示例.zip

    bboss支持JDBC式的操作方式,使得开发者可以像操作数据库一样操作Elasticsearch,提高了开发效率。 3. **bboss与Elasticsearch的集成** 集成bboss和Elasticsearch时,首先需要在项目中引入bboss的依赖,并配置...

    J2EE企业级开源框架bboss v5.0.6.8

    bboss内置了强大的持久层框架,支持多种数据库操作,如SQL语句执行、事务管理、缓存策略等。这使得开发者无需深入了解数据库细节,就能轻松处理数据存储和检索,提高了开发效率。 **5. 全局事务托管** bboss提供...

    J2EE企业级开源框架bboss v5.0.8

    4. **持久层支持**: 框架集成了多种持久层技术,如Hibernate、MyBatis等,方便开发者进行数据库操作,提供了事务管理和数据访问的抽象层,提高了代码的可复用性。 5. **全局事务托管**: bboss支持分布式事务处理,...

    J2EE企业级开源框架bboss v5.0.2.9

    bboss提供了全局事务管理功能,可以协调多个数据库操作,确保事务的一致性和完整性。即使在分布式环境下,也能有效地处理跨系统、跨服务的事务。 ### 6. 安全认证与SSO bboss框架内置了安全认证机制,包括用户身份...

    J2EE企业级开源框架bboss v5.0.3.6

    在分布式环境中,bboss能够管理跨越多个数据库或服务的事务,确保数据的一致性。其全局事务托管功能支持JTA(Java Transaction API),实现跨系统、跨资源的事务控制,保证业务操作的原子性。 ### 6. 安全认证与SSO...

    bbossgroups 开发系列文章之一 最佳实践

    在配置文件中,可以设定数据库连接池、事务管理等,以实现高效的数据库操作。 DAO组件管理涉及到如何管理和注入数据库访问组件。DAO(Data Access Object)是访问数据库的对象,通常包含对数据库的基本操作方法。...

Global site tag (gtag.js) - Google Analytics