论坛首页 Java企业应用论坛

怎样在配置多个数据库服务器的信息

浏览 12621 次
该帖已经被评为精华帖
作者 正文
   发表时间:2003-10-02  
在我们现在的系统中可能可能会使用到多个数据库服务器,在应用中会根据不同的操作选择不同的数据库服务器进行处理,这如何在xml文件或properties文件中进行配置呢?如有两个数据库服务器,都在跑ORACLE,一台机为x.x.x.1,另外一台机为x.x.x.2,用户名和密码全部一样,我该项怎样写配置文件呢??

谢谢!
   发表时间:2003-10-02  
Question:

引用
我现在在做一个项目,需要从两个数据库实例中存取数据,在用hibernate实现的过程中该如何配置和处理

--------------------------------------------------------------------------------

1、如果一个项目要从两个乃至多个数据库实例读取数据,该如何处理?
2、如果只有一个数据库oraA,为其建立建立oraA.hbm.xml以及hibernate.properties文件,该文件中的数据库连接部分写为:
## Oracle
hibernate.dialect net.sf.hibernate.dialect.OracleDialect
hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver
hibernate.connection.username username
hibernate.connection.password password
hibernate.connection.url jdbc:oracle:thin:@local:1521:ora

3、如有两个oracle数据库oraA和oraB,分别为其建立oraA.hbm.xml和oraB.hbm.xml映射文件,这样数据库中的各个表和实体持久化类就可以映射好,但是hibernate.properties中的数据库配置部分该如何处理呢,怎样才能同时连接上两个数据库实例呢?


如果用这个Configuration.configure(File configFile)
configFile可以是不同的配置。

通过配置configFile可以得到每个数据库的configuration, 也就是可以获得每个数据库实例的session;但是在hibernate.properties文件中怎么写数据库连接部分呢,一个数据库的时候写法是:hibernate.connection.url jdbc:oracle:thin:@local:1521:ora

那如果有两个数据库实例呢,在hibernate.properties文件中怎么处理,总不会是写成如下吧:
##oracle
hibernate.dialect net.sf.hibernate.dialect.OracleDialect
hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver
hibernate.connection.username username
hibernate.connection.password password
hibernate.connection.url jdbc:oracle:thin:@local:1521:oraA
hibernate.connection.username usernamet
hibernate.connection.password passwordt
hibernate.connection.url jdbc:oracle:thin:@local:1521:oraB


Answer:

写两个hibernate.properties,例如连接oraA的叫做hibernateA.properties,连接oraB的叫做hibernateB.properties。

hibernateA.properties内容如下:

引用
hibernate.dialect net.sf.hibernate.dialect.OracleDialect
hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver
hibernate.connection.username username
hibernate.connection.password password
hibernate.connection.url jdbc:oracle:thin:@local:1521:oraA 



hibernateB.properties内容如下:

引用
hibernate.dialect net.sf.hibernate.dialect.OracleDialect
hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver
hibernate.connection.username usernamet
hibernate.connection.password passwordt
hibernate.connection.url jdbc:oracle:thin:@local:1521:oraB


程序里面:

代码:
Configuration conf_oraA = new Configuration("/hibernateA.properties");.addClass();.......; 

Configuration conf_oraB = new Configuration("/hibernateB.properties");.addClass();.......; 

SessionFactory sf_oraA = conf_oraA.buildSessionFactory();; 
SessionFactory sf_oraB = conf_oraB.buildSessionFactory();; 

Session s_oraA = sf_oraA.openSession();; 
Session s_oraB = sf_oraB.openSession();; 

...... 
0 请登录后投票
   发表时间:2003-10-04  
如果使用XML配置文件也可以这么做吗?
0 请登录后投票
   发表时间:2003-10-04  
我会试一下 写道
如果使用XML配置文件也可以这么做吗?


当然可以
0 请登录后投票
   发表时间:2003-10-14  
这么说我上次问的多个缓冲池配置的问题也得这么作喽?
那样的话,原来一个XML文件里的20多个缓冲池岂不是
拆成了二十几个配置文件,是不是有点弱智?难道没有比这好一点
的方案吗。

关于缓冲池的提问见下帖:
http://forum.hibernate.org.cn/viewtopic.php?t=494

     
0 请登录后投票
   发表时间:2004-08-26  
这里有以前的一篇文章,讲了这个问题:

http://blog.csdn.net/hongbo781202/archive/2004/05/31/13139.aspx
0 请登录后投票
   发表时间:2004-08-31  
robbin说的产生多个sessionFactory的方法,创建数据库连接。
还有另外一种方法,我来补充。用xml的话,这样:
把hibernateA.properties和hibernateB.properties用xml形式改写。之后,
Configuration cfg = new Configuration();;
cfg.configure("hibernateA.cfg.xml");.configure("hibernateB.cfg.xml");;
SessionFactory  _sessions = cfg.buildSessionFactory();;

这样就在一个sessionFactory创建多个数据库了。
0 请登录后投票
   发表时间:2004-12-01  
我试用了上面的代码,一个sessionFactory创建多个数据库连接,但是我使用的时候,不行的,系统错误告诉我,找不到,表或视图,我发现同时使用楼上的方法加载两个配置的时候,只有最后一次加载的配置文件的设置好用的,不知道是什么原因,请帮
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics