我有一个在Java 6,Spring 2.5.6和Hibernate 3.2.7上运行的Web应用程序。现在需要从几个数据库中获取一些数据,这些数据库的名称在运行时之前是未知的。实现这一目标的最佳方法是什么?
我看过,例如在http://blog.springsource.com/2007/01/23/dynamic-datasource-routing/的文章中,但这似乎只适用于事先知道所有数据库配置的情况。
答案 0 :(得分:2)
您可以在Java代码中进行配置,因此您可以在运行时进行配置:
答案 1 :(得分:2)
您可以创建一个实现org.hibernate.connection.ConnectionProvider
的类。然后在你的hibernate配置文件中添加如下所示的类:
<property name="hibernate.connection.provider_class">my.class.that.implements.ConnectionProvider</property>
您可能也想为每个数据库使用不同的sessionFactory。您能否提供有关应用程序在运行时如何发现数据库连接的更多信息?
答案 2 :(得分:2)
由于每个数据库的数据库结构相同(尽管事先不知道它们的名称),但我决定通过将数据库名称作为参数添加到查询中来强制它。这避免了使用多个会话工厂时的资源和管理问题。
此处提供更多信息:http://web.archive.org/web/20071011173719/http://hibernate.org/429.html