我需要为不同的客户提供多个数据库。如何使用 Hibernate 处理多个数据库?有没有很好的例子如何做到这一点?
我可以创建 Configuration 对象,然后构建 SessionFactory,但这总是会创建一个新的会话工厂,这不是很明智。
编辑:
现在我可以在用户登录时获取休眠配置对象,但是如何使用该对象创建/获取会话工厂,以便一个数据库只有一个会话工厂(当然,如果同时使用多个数据库,那么可以有多个会话工厂)?
我需要为不同的客户提供多个数据库。如何使用 Hibernate 处理多个数据库?有没有很好的例子如何做到这一点?
我可以创建 Configuration 对象,然后构建 SessionFactory,但这总是会创建一个新的会话工厂,这不是很明智。
编辑:
现在我可以在用户登录时获取休眠配置对象,但是如何使用该对象创建/获取会话工厂,以便一个数据库只有一个会话工厂(当然,如果同时使用多个数据库,那么可以有多个会话工厂)?
我有同样的问题。我是这样解决的:
首先,不同的数据库应该有不同的cfg.xml文件。然后,只要您想连接到第二个数据库,只需使用 Hibernate 的配置对象。
Configuration config = new Configuration().configure("<complete path to your cfg.xml file>");
SessionFactory sessionFactory = config.buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
我在这里找到了这个:http: //www.coderanch.com/t/468821/ORM/java/If-hibernate-cfg-xml-has
我很确定这可以扩展到 2 个以上的数据库。希望这可以帮助。
一个 HibernateSessionFactory
一次只能处理一个DataSource
,一般来说每个都DataSource
指一个且只有一个数据库。因此,如果您需要多个数据库,那么最简单的解决方案几乎肯定是多个SessionFactory
实例。
我不确定你为什么认为这不明智,不过,这对我来说似乎很公平。
一些 RDBMS 允许有限的跨数据库引用,这可能允许您使用 Hibernate 和单个DataSource
.
我需要为不同的客户提供多个数据库。如何使用 Hibernate 处理多个数据库?有没有很好的例子如何做到这一点?
您确实必须创建多个SessionFactory
(每个数据库一个)。
现在我可以在用户登录时获取休眠配置对象,但是如何使用该对象创建/获取会话工厂,以便一个数据库只有一个会话工厂(当然,如果同时使用多个数据库,那么可以有多个会话工厂)?
使用一些独特的Map<SomeKey, SessionFactory>
. 如果SessionFactory
尚未创建 a,则构建它并将其存储在地图中。