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