Hibernate在多个数据库中持久保存相同的对象,相同的表

时间:2017-05-15 19:02:51

标签: java spring hibernate

我们正在将数据库从一个数据库迁移到另一个数据库,我们无法承受应用程序的停机时间。因此,我们希望在此过程中编写相同的实体,一旦迁移,我们就可以删除源代码。我们正在为应用程序使用hibernate。有没有什么方法可以让hibernate在具有相同表结构的多个模式中编写相同的实体? 。它也应该是跨这两个DB的事务性的

2 个答案:

答案 0 :(得分:0)

您需要创建2个会话,每个会话使用一个数据库连接,然后在保存bean时从两个会话中调用session.save()

示例:

Foo foo = new Foo();
foo.setName('FooName');
foo.setType('FooType');

session1.save(foo);
session2.save(foo);

您可以将其打包在Service中,这样您就可以使用@Transactional进行处理,避免保存在一个数据库中,而不是保存在另一个数据库中。

答案 1 :(得分:0)

如果您熟悉持久性单元,那么它将非常适合您。您可以使用定义持久性单元的多个数据源(我的意思是数据库连接)。请参阅spring persistence unit和persistence context的文档。

我希望它能帮助你实现目标。