【问题标题】:Session factories to handle multiple DB connections处理多个数据库连接的会话工厂
【发布时间】:2012-01-04 06:42:37
【问题描述】:

我的任务是为不同的数据源创建多个会话工厂。一个数据源将用于读取请求,另一个用于读写请求。

我们的数据库服务(DAO 的包装器)的每个 API 都作为事务执行。单个 API 可以调用多个具有不同读/写属性的 DAO 函数。

执行此任务的最佳方法是什么?

【问题讨论】:

标签: hibernate spring dao quest


【解决方案1】:

我假设不同的数据源是不同的数据库。否则,您可以使用带有 @Transactional 注释的 readOnly 属性来管理只读事务。

您可以在 DAO 层中注入两个单独的会话工厂来管理这些事务。或者,您可以使用 AbstractRoutingDataSource。请参阅有关此here 的文章

【讨论】:

  • 是的,不同的数据源是不同的数据库。
  • 然后你可以注入不同的 sessionfactories 。如果您有不同的事务管理器,那么您可以使用 @Transactional("TxManagerName") 。您可以将这一切与 AbstractRoutingDataSource 联系起来。但是您是否计划在同一方法中跨不同的事务数据源工作 - 即,如果一个 DB 回滚应该影响另一个,请考虑使用 XA 数据源。
  • 这真的很有帮助。您能否告诉我从单个 API 连接到多个数据库的利弊?除此之外,可能很幼稚,但是在 Spring 中使用全局事务(XA 数据源)的方法是什么?
  • @tyro - 如果您对答案感到满意,请投票(点击向上箭头)/勾选标记
  • 投票需要15个声望:(你能回答上一个问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 2017-10-30
相关资源
最近更新 更多