bboss多数据库事务管理

简介: 本文以一个简单的实例来介绍bbossgroups中持久层框架如何实现多数据库事务: @Test public void testMutiDBTX() { TransactionManager tm = new TransactionManager(); try { tm.
本文以一个简单的实例来介绍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持久层框架数据源配置文件实例
目录
相关文章
|
20天前
|
消息中间件 数据库 云计算
微服务架构下的数据库事务管理策略####
在微服务架构中,传统的单体应用被拆分为多个独立的服务单元,每个服务维护自己的数据库实例。这种设计提高了系统的可扩展性和灵活性,但同时也带来了分布式环境下事务管理的复杂性。本文探讨了微服务架构下数据库事务的挑战,并深入分析了几种主流的事务管理策略,包括Saga模式、两阶段提交(2PC)以及基于消息的最终一致性方案,旨在为开发者提供一套适应不同业务场景的事务处理框架。 ####
|
5月前
|
分布式计算 数据库
现代数据库系统的并发控制与事务管理
数据库系统的并发控制与事务管理是保障数据一致性和并发访问效率的核心技术。本文深入探讨了现代数据库系统中常见的并发控制方法和事务管理机制,包括乐观并发控制和悲观并发控制,以及ACID特性的实现和应用。通过对比分析不同方法的优缺点,展示了在不同应用场景下如何选择合适的并发控制策略和事务管理方式,以达到最优的数据库性能和数据一致性。
|
7月前
|
关系型数据库 MySQL 数据库
【MySQL】:数据库事务管理
【MySQL】:数据库事务管理
107 0
|
7月前
|
关系型数据库 API 数据库
Django中的数据库事务管理:确保数据一致性
【4月更文挑战第15天】Django框架提供强大的数据库事务管理,确保ACID属性,保证数据一致性和完整性。文章深入讨论了Django事务管理,包括使用`@transaction.atomic`装饰器和`transaction.atomic()`上下文管理器手动控制事务,以及低级API进行精细管理。注意避免长时间事务、选择合适隔离级别、正确处理异常及了解数据库特性。掌握这些技巧对构建可靠Web应用至关重要。
|
7月前
|
SQL NoSQL 数据库
深入浅出:微服务架构下的数据库事务管理
【2月更文挑战第12天】 在当今微服务架构日益流行的背景下,如何有效地管理跨服务的数据库事务成为了开发与维护中的一大挑战。本文旨在探讨微服务环境下数据库事务管理的关键技术和策略,包括但不限于分布式事务的基本概念、常见的解决方案(如两阶段提交、补偿事务等),以及这些方案在实际应用中的优缺点比较。通过深入浅出的方式,本文希望能够帮助读者更好地理解并应对微服务架构下的数据库事务管理问题,进而提升系统的稳定性和可靠性。
155 4
|
7月前
|
SQL 安全 关系型数据库
数据库第十三次作业 事务管理
数据库第十三次作业 事务管理
84 6
|
XML Java Go
Spring事务管理: 构建稳健的数据库事务处理
Spring事务管理: 构建稳健的数据库事务处理
64 0
|
XML Oracle Java
第九篇 Spring数据库事务管理
第九篇 Spring数据库事务管理
110 0
|
SQL Oracle Java
Spring JDBC-Spring事务管理之数据库事务基础知识
Spring JDBC-Spring事务管理之数据库事务基础知识
95 0