1.配置多个数据源-poolman.xml
在classes类路径根目录下准备好dbcp.xml和dbcp1.xml两个配置文件(基于bboss ioc语法)
dbcp.xml:
dbcp1.xml:
在poolman.xml中装载这两个数据源:
ds0 false true ds0_datasource_jndiname dbcp.xml false true composite true 10000 ds1 false true ds1_datasource_jndiname dbcp1.xml false true composite false
配置了两个数据源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