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

本文详细介绍了BBoss持久层如何配置及使用多数据源,包括配置多个数据源、多数据源API及事务控制实例,并提供了相关下载链接。重点在于通过配置池化管理器和数据源文件实现不同数据源的灵活切换,确保数据库操作的一致性和高效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

1.配置多个数据源-poolman.xml  
在classes类路径根目录下准备好dbcp.xml和dbcp1.xml两个配置文件(基于bboss ioc语法) 
dbcp.xml: 
Xml代码   收藏代码
  1. <property name="datasource" class="com.frameworkset.commons.dbcp2.BasicDataSource">  
  2.     <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>    
  3.     <property name="url" value="jdbc:oracle:thin:@//10.0.15.51:1521/orcl"/>    
  4.     <property name="username" value="afms"/>    
  5.     <property name="password" value="afms"/>    
  6.     <!--initialSize: 初始化连接-->    
  7.     <property name="initialSize" value="5"/>    
  8.     <property name="maxTotal" value="20"/>    
  9.     <!--maxIdle: 最大空闲连接-->    
  10.     <property name="maxIdle" value="20"/>    
  11.     <!--minIdle: 最小空闲连接-->    
  12.     <property name="minIdle" value="20"/>    
  13.   
  14.     <!--removeAbandoned: 是否自动回收超时连接-->    
  15.     <property name="removeAbandonedOnBorrow" value="false"/>  
  16.     <property name="logAbandoned" value="true"/>  
  17.     <!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->    
  18.     <property name="removeAbandonedTimeout" value="180"/>    
  19.     <!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于6秒-->    
  20.     <property name="maxWaitMillis" value="3000"/>    
  21.     <property name="validationQuery" value="SELECT 1 from dual"/>     
  22.     <property name="testOnBorrow" value="true"/>   
  23. </property>  

dbcp1.xml: 
Xml代码   收藏代码
  1. <property name="datasource" class="com.frameworkset.commons.dbcp2.BasicDataSource">  
  2.     <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>    
  3.     <property name="url" value="jdbc:oracle:thin:@//10.0.15.51:1521/orcl"/>    
  4.     <property name="username" value="bfms"/>    
  5.     <property name="password" value="bfms"/>    
  6.     <!--initialSize: 初始化连接-->    
  7.     <property name="initialSize" value="5"/>    
  8.     <property name="maxTotal" value="20"/>    
  9.     <!--maxIdle: 最大空闲连接-->    
  10.     <property name="maxIdle" value="20"/>    
  11.     <!--minIdle: 最小空闲连接-->    
  12.     <property name="minIdle" value="20"/>    
  13.   
  14.     <!--removeAbandoned: 是否自动回收超时连接-->    
  15.     <property name="removeAbandonedOnBorrow" value="false"/>  
  16.     <property name="logAbandoned" value="true"/>  
  17.     <!--removeAbandonedTimeout: 超时时间(以秒数为单位)-->    
  18.     <property name="removeAbandonedTimeout" value="180"/>    
  19.     <!--maxWait: 超时等待时间以毫秒为单位 6000毫秒/1000等于6秒-->    
  20.     <property name="maxWaitMillis" value="3000"/>    
  21.     <property name="validationQuery" value="SELECT 1 from dual"/>     
  22.     <property name="testOnBorrow" value="true"/>   
  23. </property>  


在poolman.xml中装载这两个数据源: 
Xml代码   收藏代码
  1. <poolman>  
  2.   
  3.   <datasource>  
  4.   
  5.         <dbname>ds0</dbname>  
  6.         <loadmetadata>false</loadmetadata>  
  7.         <enablejta>true</enablejta>  
  8.         <jndiName>ds0_datasource_jndiname</jndiName>  
  9.         <datasourceFile>dbcp.xml</datasourceFile>  
  10.         <autoprimarykey>false</autoprimarykey>  
  11.         <showsql>true</showsql>  
  12.         <keygenerate>composite</keygenerate>  
  13.                 <RETURN_GENERATED_KEYS>true</RETURN_GENERATED_KEYS>  
  14.                 <queryfetchsize>10000</queryfetchsize>  
  15.     </datasource>  
  16. <datasource>  
  17.   
  18.         <dbname>ds1</dbname>  
  19.         <loadmetadata>false</loadmetadata>  
  20.         <enablejta>true</enablejta>  
  21.         <jndiName>ds1_datasource_jndiname</jndiName>  
  22.         <datasourceFile>dbcp1.xml</datasourceFile>  
  23.         <autoprimarykey>false</autoprimarykey>  
  24.         <showsql>true</showsql>  
  25.         <keygenerate>composite</keygenerate>  
  26.                 <RETURN_GENERATED_KEYS>false</RETURN_GENERATED_KEYS>  
  27.     </datasource>  
  28. </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了。): 

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值