`

bboss持久层多数据源配置及多数据库事务控制使用方法

阅读更多
bboss持久层多数据源配置及使用方法,持久层框架及demo下载请参看文档:http://yin-bp.iteye.com/blog/1080824

1.配置多个数据源-poolman.xml
在classes类路径根目录下准备好dbcp.xml和dbcp1.xml两个配置文件(基于bboss ioc语法)
dbcp.xml:
<property name="datasource" class="com.frameworkset.commons.dbcp2.BasicDataSource">
 	<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>  
	<property name="url" value="jdbc:oracle:thin:@//10.0.15.51:1521/orcl"/>  
	<property name="username" value="afms"/>  
	<property name="password" value="afms"/>  
	<!--initialSize: 初始化连接-->  
	<property name="initialSize" value="5"/>  
	<property name="maxTotal" value="20"/>  
	<!--maxIdle: 最大空闲连接-->  
	<property name="maxIdle" value="20"/>  
	<!--minIdle: 最小空闲连接-->  
	<property name="minIdle" value="20"/>  

	<!--removeAbandoned: 是否自动回收超时连接-->  
	<property name="removeAbandonedOnBorrow" value="false"/>
	<property name="logAbandoned" value="true"/>
	<!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->  
	<property name="removeAbandonedTimeout" value="180"/>  
	<!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于6秒-->  
	<property name="maxWaitMillis" value="3000"/>  
	<property name="validationQuery" value="SELECT 1 from dual"/>	  
	<property name="testOnBorrow" value="true"/> 
</property>

dbcp1.xml:
<property name="datasource" class="com.frameworkset.commons.dbcp2.BasicDataSource">
 	<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>  
	<property name="url" value="jdbc:oracle:thin:@//10.0.15.51:1521/orcl"/>  
	<property name="username" value="bfms"/>  
	<property name="password" value="bfms"/>  
	<!--initialSize: 初始化连接-->  
	<property name="initialSize" value="5"/>  
	<property name="maxTotal" value="20"/>  
	<!--maxIdle: 最大空闲连接-->  
	<property name="maxIdle" value="20"/>  
	<!--minIdle: 最小空闲连接-->  
	<property name="minIdle" value="20"/>  

	<!--removeAbandoned: 是否自动回收超时连接-->  
	<property name="removeAbandonedOnBorrow" value="false"/>
	<property name="logAbandoned" value="true"/>
	<!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->  
	<property name="removeAbandonedTimeout" value="180"/>  
	<!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于6秒-->  
	<property name="maxWaitMillis" value="3000"/>  
	<property name="validationQuery" value="SELECT 1 from dual"/>	  
	<property name="testOnBorrow" value="true"/> 
</property>


在poolman.xml中装载这两个数据源:
<poolman>

  <datasource>

		<dbname>ds0</dbname>
		<loadmetadata>false</loadmetadata>
		<enablejta>true</enablejta>
		<jndiName>ds0_datasource_jndiname</jndiName>
		<datasourceFile>dbcp.xml</datasourceFile>
		<autoprimarykey>false</autoprimarykey>
		<showsql>true</showsql>
		<keygenerate>composite</keygenerate>
                <RETURN_GENERATED_KEYS>true</RETURN_GENERATED_KEYS>
                <queryfetchsize>10000</queryfetchsize>
	</datasource>
<datasource>

		<dbname>ds1</dbname>
		<loadmetadata>false</loadmetadata>
		<enablejta>true</enablejta>
		<jndiName>ds1_datasource_jndiname</jndiName>
		<datasourceFile>dbcp1.xml</datasourceFile>
		<autoprimarykey>false</autoprimarykey>
		<showsql>true</showsql>
		<keygenerate>composite</keygenerate>
                <RETURN_GENERATED_KEYS>false</RETURN_GENERATED_KEYS>
	</datasource>
</poolman>


配置了两个数据源ds0和ds1,下面介绍利用持久层api在不同数据源上执行db操作。

queryfetchsize:指定数据源对应的jdbc 查询操作的fetchsize,不指定的话采用jdbc默认设置

2.多数据源api及多数据源事务控制实例
目前bboss常用的数据库访问组件ConfigSQLExecutor和SQLExecutor都提供了多数据源操作api,这种api中都显示地指定dbname参数,也就是数据源的名称,例如上面的ds0和ds1;另外一种api是不带dbname参数,这种api默认在poolman.xml文件中配置的第一个数据源上执行db操作。两种api举例说明如下(以SQLExecutor组件为例来说明,ConfigSQLExecutor组件除了sql语句从配置文件中读取外,它的api与SQLExecutor组件api一致,就不额外介绍ConfigSQLExecutor了。):

TransactionManager tm = new TransactionManager();
try{
tm.begin();//开始事务
SQLExecutor.delete("delete from LISTBEAN where id=?",1);//不带数据源dbname的api,默认在第一个数据源上执行db操作,也就是ds0数据源。
		SQLExecutor.deleteWithDBName("ds0","delete from LISTBEAN where id=?",1);//显示指定db操作在ds0数据源上操作
		SQLExecutor.deleteWithDBName("ds1","delete from LISTBEAN where id=?",1);//显示指定db操作在ds1数据源上操作
tm.commit();//提交事务
}
catch(Exception e)
{
   throw e;
}
finally
{
   tm.release();//释放事务资源,如果有异常发生,则会回滚事务
}

上面是以删除操作来做说明,同时我们将两个数据源上的数据库操作包含到一个事务中,这样很好地保证了多数据库操作事务的一致性。其它操作(插入,修改,查询)类似也不举例一一介绍了,具体可参考以下示例文件:
SimpleApiTest1.java
ConfigSQLExecutorTest.java
SimpleApiTest.java
TestPrepareDBUtilNewInterface.java
分享到:
评论

相关推荐

    由 bboss 开源的数据采集&流批一体化工具,提供数据采集、数据清洗转换处理和数据入库以及数据指标统计计算流批一体化处理功能

    bboss-datatran 支持多种数据源的接入,如关系型数据库(MySQL、Oracle等)、NoSQL数据库(HBase、MongoDB等)、消息队列(Kafka、RabbitMQ等)以及文件系统(HDFS、FTP等)。通过内置的适配器,用户可以方便地将...

    bboss ioc配置文件中使用外部属性文件介绍

    当需要使用外部属性文件时,我们可以创建一个独立的`.properties`文件,如`config.properties`,这个文件可以包含应用程序的配置参数,如数据库连接字符串、服务器端口等。 在`config.properties`中,键值对的形式...

    bboss mvcdemo 下载地址

    - 安装与配置指南:如何下载和设置BBoss MVCDemo环境,包括JDK、应用服务器(如Tomcat)、数据库等的配置。 - 快速入门:简单的示例展示如何创建第一个BBoss MVCDemo应用,包括编写控制器、模型和视图。 - 请求处理...

    基于Java的bboss插件集设计源码,涵盖文档转换及持久层技术

    该项目为bboss插件集的Java设计源码,总计277个文件,涵盖163个Java源文件、22个XML配置文件、14个Gradle构建脚本、13个Git忽略规则、13个属性文件以及少量的JavaScript、HTML、CSS和Shell脚本,主要用于文档转换和...

    企业级J2EE开源框架bboss

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

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

    BBoss Persistent是一个轻量级的持久层框架,它提供了方便的方式来处理这些大字段。本文将深入探讨在BBoss Persistent 1.0.2中如何高效地管理CLOB和BLOB数据。 首先,CLOB用于存储大量的文本数据,如长篇文章或XML...

    bboss-db-elasticsearch-tool-master_java_

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

    基于bboss新版平台项目环境搭建和代码工具使用视频教程.rar

    1. **配置数据源**:设置代码生成器连接的数据库信息。 2. **选择表和字段**:指定要生成代码的数据库表及所需字段。 3. **模板选择**:选择代码生成的模板样式,如MVC模式、Service模式等。 4. **生成代码**:点击...

    springboot整合bboss es增删改查测试demo代码

    本实例是一个基于bboss es spring boot starter的demo maven工程,可供spring boot项目集成bboss elasticsearch rest client参考 展示了通过spring boot管理单集群功能和管理多集群功能 单集群测试用例:...

    bboss会话共享培训文档

    bboss会话共享是一种分布式会话管理技术,它针对在集群环境下应用部署时如何解决会话数据丢失和单点登录问题提供了专门的解决方案。根据提供的文档内容,我们可以详细探讨bboss会话共享涉及的关键知识点。 首先,...

    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还提供了批量操作、事务控制、性能优化、异常处理等高级特性。例如,可以使用bboss的批处理API一次性处理大量数据,提高数据导入效率。 7. **应用场景** 结合bboss和Elasticsearch,开发者...

    基于Java的bboss-datatran数据采集与流批一体化处理工具设计源码

    本bboss-datatran项目基于Java开发,包含591个文件,包括Java源代码、Markdown文档、GIT忽略文件、Gradle构建文件、Properties配置文件、Preferences配置文件、XML配置文件、GIT属性文件、LICENSE文件和PNG图片。...

    bboss-elasticsearch开发环境搭建和开发入门视频教程.

    2. **bboss elasticsearch开发入门教程.wmv**: 通过实例演示,讲解如何使用BBoss进行索引操作、数据插入、查询和更新,帮助初学者快速上手。 **六、资料阅读** "说明.txt" 文件可能包含了关于这些教程的详细步骤和...

    由 bboss 开源的数据采集同步ETL工具,提供数据采集、数据清洗转换处理和数据入库以及数据指标统计计算流批一体化处理功能

    bboss-datatran 由 bboss 开源的数据采集&流批一体化工具,提供数据采集、数据清洗转换处理和数据入库以及数据指标统计计算流批一体化处理功能。 同时也是一个高性能Elasticsearch orm 客户端,100%兼容es各个版本 ...

    springboot集成ElasticsearchBboss调用Elasticsearch.md

    springboot集成ElasticsearchBboss调用Elasticsearch的案例分享

    bboss 安全认证过滤器功能介绍

    BBoss安全认证过滤器是Java Web开发中一种用于实现用户身份验证和权限控制的重要组件。在Web应用程序中,过滤器(Filter)是Servlet规范的一部分,它允许开发者在请求到达目标Servlet或JSP之前进行预处理,以及在...

    bboss+easyui帮助文档比较详细

    2. **BBoss核心组件讲解**:详细解析BBoss的各个模块,如DAO、Service、权限控制等的使用方法。 3. **EasyUI组件使用**:讲解如何在页面中引入EasyUI,以及各种组件的属性设置和事件绑定。 4. **实战示例**:提供...

Global site tag (gtag.js) - Google Analytics