Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 使用多个数据库休眠_Hibernate_Spring_Multiple Databases - Fatal编程技术网

Hibernate 使用多个数据库休眠

Hibernate 使用多个数据库休眠,hibernate,spring,multiple-databases,Hibernate,Spring,Multiple Databases,我需要为不同的客户提供多个数据库。如何使用Hibernate处理多个数据库?有没有好的例子来说明如何做到这一点 我可以创建配置对象,然后构建SessionFactory,但这将始终创建一个新的会话工厂,这不是很明智 编辑: 现在,当用户登录时,我可以获取hibernate配置对象,但是如何使用该对象创建/获取会话工厂,以便一个数据库只有一个会话工厂(当然,如果同时使用多个数据库,那么可以有多个会话工厂) HibernateSessionFactory一次只能处理一个DataSource,一般来说

我需要为不同的客户提供多个数据库。如何使用Hibernate处理多个数据库?有没有好的例子来说明如何做到这一点

我可以创建配置对象,然后构建SessionFactory,但这将始终创建一个新的会话工厂,这不是很明智

编辑:


现在,当用户登录时,我可以获取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:没问题,只是问“好”问题会让你更容易得到“好”答案:)