java

位置:IT落伍者 >> java >> 浏览文章

Hibernate如何配置操作多个数据库


发布日期:2019年11月06日
 
Hibernate如何配置操作多个数据库
Question:

引用

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

如果一个项目要从两个乃至多个数据库实例读取数据该如何处理?

如果只有一个数据库oraA为其建立建立oraAhbmxml以及hibernateproperties文件该文件中的数据库连接部分写为

## Oracle

hibernatedialect netsfhibernatedialectOracleDialect

nnectiondriver_class oraclejdbcdriverOracleDriver

nnectionusername username

nnectionpassword password

nnectionurl jdbc:oracle:thin:@local::ora

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

如果用这个nfigure(File configFile)

configFile可以是不同的配置

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

那如果有两个数据库实例呢在hibernateproperties文件中怎么处理总不会是写成如下吧

##oracle

hibernatedialect netsfhibernatedialectOracleDialect

nnectiondriver_class oraclejdbcdriverOracleDriver

nnectionusername username

nnectionpassword password

nnectionurl jdbc:oracle:thin:@local::oraA

nnectionusername usernamet

nnectionpassword passwordt

nnectionurl jdbc:oracle:thin:@local::oraB

Answer:

写两个hibernateproperties例如连接oraA的叫做hibernateAproperties连接oraB的叫做hibernateBproperties

hibernateAproperties内容如下

引用

hibernatedialect netsfhibernatedialectOracleDialect

nnectiondriver_class oraclejdbcdriverOracleDriver

nnectionusername username

nnectionpassword password

nnectionurl jdbc:oracle:thin:@local::oraA

hibernateBproperties内容如下

引用

hibernatedialect netsfhibernatedialectOracleDialect

nnectiondriver_class oraclejdbcdriverOracleDriver

nnectionusername usernamet

nnectionpassword passwordt

nnectionurl jdbc:oracle:thin:@local::oraB

程序里面

代码

java代码

Configuration conf_oraA = new Configuration(/hibernateApropertiesaddClass()……

Configuration conf_oraB = new Configuration(/hibernateBpropertiesaddClass()……

SessionFactory sf_oraA = conf_oraAbuildSessionFactory()

SessionFactory sf_oraB = conf_oraBbuildSessionFactory()

Session s_oraA = sf_oraAopenSession()

Session s_oraB = sf_oraBopenSession()

……

更正一下

方案一

写两个hibernatecfgxml

使用数据库a的时候

Configuration cfg_a=new Configuration()configure(hibernatecfg_axml)

使用数据库b的时候

Configuration cfg_b=new Configuration()configure(hibernatecfg_bxml)

usr/home/zk/htdocs/upload_files/images

方案二

使用一个能操作两个数据库的账号在?hbmxml映射文件中的class标签中指定catalog为数据库名

上一篇:hibernate关系映射

下一篇:Eclipse Ant开发EJB的三个习惯