Hibernate 使用多个数据库休眠
我需要为不同的客户提供多个数据库。如何使用Hibernate处理多个数据库?有没有好的例子来说明如何做到这一点 我可以创建配置对象,然后构建SessionFactory,但这将始终创建一个新的会话工厂,这不是很明智 编辑:Hibernate 使用多个数据库休眠,hibernate,spring,multiple-databases,Hibernate,Spring,Multiple Databases,我需要为不同的客户提供多个数据库。如何使用Hibernate处理多个数据库?有没有好的例子来说明如何做到这一点 我可以创建配置对象,然后构建SessionFactory,但这将始终创建一个新的会话工厂,这不是很明智 编辑: 现在,当用户登录时,我可以获取hibernate配置对象,但是如何使用该对象创建/获取会话工厂,以便一个数据库只有一个会话工厂(当然,如果同时使用多个数据库,那么可以有多个会话工厂) HibernateSessionFactory一次只能处理一个DataSource,一般来说
现在,当用户登录时,我可以获取hibernate配置对象,但是如何使用该对象创建/获取会话工厂,以便一个数据库只有一个会话工厂(当然,如果同时使用多个数据库,那么可以有多个会话工厂) Hibernate
SessionFactory
一次只能处理一个DataSource
,一般来说,每个DataSource
都指一个且仅指一个数据库。因此,如果您需要多个数据库,那么最简单的解决方案几乎肯定是多个SessionFactory
实例
我不知道你为什么认为这是不明智的,不过,这对我来说已经足够公平了
一些RDBMS允许有限的跨数据库引用,这可能允许您使用Hibernate和单个数据源执行某些操作,但您尚未告诉我们有关数据库设置的任何信息
我需要为不同的客户提供多个数据库。如何使用Hibernate处理多个数据库?有没有好的例子来说明如何做到这一点
实际上,您必须创建多个会话工厂
(每个数据库一个)
现在,当用户登录时,我可以获取hibernate配置对象,但是如何使用该对象创建/获取会话工厂,以便一个数据库只有一个会话工厂(当然,如果同时使用多个数据库,那么可以有多个会话工厂)
使用一些独特的地图
。如果尚未创建会话工厂,请构建它并将其存储在地图中。我也遇到了同样的问题。我是这样解决的:
首先,对于不同的数据库,应该有不同的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();
Configuration config=new Configuration().configure(“”);
SessionFactory SessionFactory=config.buildSessionFactory();
Session Session=sessionFactory.getCurrentSession();
session.beginTransaction();
我在这里找到了这个:
我很确定这可以扩展到2个以上的数据库。
希望这能有所帮助。我不知道如何动态创建新的会话工厂并将它们映射到srping框架,这样我就可以在DAO中使用hibernate会话了。@newbie:你没有说动态创建它们。这的确是个坏主意。Hibernate不是这个工作的工具。为什么?客户的一个会话工厂,在用户登录时动态创建。我看不出有什么问题,但我不知道实现iThanx的最佳方法是什么,因为所有数据库都是相同的,所以我只使用了一个SessionFactory。现在我创建连接对象并使用方法sessionFactory.openSession(Connection);获取休眠会话。现在我可以动态连接到我想要的任何数据库。@newbie:我不是故意粗鲁,但你应该在提问时尽量提供相关细节,读者不是读心术的人。很抱歉,我接下来会更具体一些time@newbie:没问题,只是问“好”问题会让你更容易得到“好”答案:)