我可以通过 Spring/Hibernate/c3p0 将一个池数据源用于多个数据库吗?

tom*_*ger 5 spring hibernate datasource c3p0

我们的应用程序使用 Spring/Hibernate 进行数据库访问。我们使用多个hibernate会话工厂(hibernate3.LocalSessionFactoryBean),因为数据位于多个单独的数据库中。每个会话工厂都使用 c3p0 ( ) 配置了一个池数据源c3p0.ComboPooledDataSource

事实上,这些数据库都驻留在同一个数据库服务器上。我们的问题是,我们最终会得到许多数据库连接池,所有这些都连接到同一台服务器。有没有一种方法可以共享一个池数据源来访问同一服务器上的多个数据库?是否可以jdbcUrl在会话工厂级别而不是数据源级别进行配置?

或者这在实践中不是一个真正的问题?配置多个数据库连接池是否完全可以?

And*_*s S 1

我认为你做不到。我认为我不会那样做。要么将它们视为单独的数据库,要么将其视为一个数据库。

如果它们是单独的数据库,则它们具有不同的连接池,并且需要由 JTA 进行管理,或者您需要设计整个系统以应对这些数据库之间的事务失败。

如果他们被视为一体;您可以(如果您使用的是 Oracle)创建一个连接池,然后使用别名和授权来启用该单个连接以写入其他两个数据库。