我需要我的应用程序与两个不同的数据库通信,它们本身是复制的(使用 Postgres 流复制)。原因是我希望对一个数据库进行所有读取并针对另一个数据库进行写入。
我在我的应用程序中使用休眠。是否有开箱即用的方法来实现这一目标?
-谢谢
编辑:是的,请评论我想要实现的目标是否有意义。
我需要我的应用程序与两个不同的数据库通信,它们本身是复制的(使用 Postgres 流复制)。原因是我希望对一个数据库进行所有读取并针对另一个数据库进行写入。
我在我的应用程序中使用休眠。是否有开箱即用的方法来实现这一目标?
-谢谢
编辑:是的,请评论我想要实现的目标是否有意义。
Hibernate 支持分片。看看它是否对你有帮助:http ://www.hibernate.org/subprojects/shards.html
如果您使用的是 spring,那么我知道有一种方法可以动态切换 DataSource。在此处查找更多信息
这是来自 stackoverflow 的类似问题: 在单个应用程序中使用 NHibernate 处理多个数据库
在其他论坛讨论中也有同样的问题:http: //forum.springsource.org/showthread.php?t=12665
在过去,我只制作了两个会话工厂,一个用于只读工作块,一个用于读写工作块。我构建了读写工厂,然后将配置更改为具有不同的连接提供程序,并添加一个拦截器来捕获任何修改尝试并构建第二个。
这种方法的一个问题是 L2 缓存一致性,尽管这是 Hibernate 缓存和复制数据库的普遍问题。