database - 包含来自多个数据库的数据的域实体的推荐模式

标签 database nhibernate design-patterns

我维护一个应用程序,该应用程序具有许多从多个数据库中提取数据的域实体。这通常的工作方式是实体从数据库 A 加载(其中存储了它们的大部分字段)。当调用与数据库 B 中的数据对应的属性时,实体向数据库 B 触发 SQL 以获取所有相关数据。

我目前正在使用“自己动手”的 ORM,它虽然丑陋,但有效(且易于理解)。我最近开始将 NHibernate 用于仅从数据库 A 中提取的实体,但我想知道如何将 NHibernate 用于从数据库 A 和 B 中提取的实体。

我能想到的最好的方法如下。我继续为数据库 A 中的实体使用基于 NHibernate 的类库。那些也需要来自数据库 B 的数据的实体在通过属性访问的单个类中公开来自数据库 B 的所有数据。调用此属性时,它会调用适当的存储库,并返回对象。因此,访问数据库 B 的类库需要从访问数据库 A 的类库中引用。

这有什么意义吗?对于这种情况是否有更成熟的模式(这一定很常见)。

谢谢

大卫

最佳答案

我不知道它与你的情况的对应程度如何,也不知道 NHibernate 移植在这一点上有多成熟,但你可能想看看 Shards .

如果它不能按原样为您工作,它至少可以提供一些有趣的模式供您考虑。

编辑(基于评论):

这似乎确实不符合您的情况,因为 Shards 是关于数据的水平拆分。

如果您需要垂直拆分,您可能需要定义多个持久化单元。涉及两个数据库的查询和事务可能会变得有趣。恐怕我真的帮不上什么忙。这question不过肯定是相关的。

关于database - 包含来自多个数据库的数据的域实体的推荐模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3388815/

相关文章:

mysql - 选择一行,上面一行和下面一行

c# - 如何根据更新语句中的表值更新表值?

c# - Nhibernate:一个实体类的多个类映射

java - 如何在Swing应用程序中实现JProgressBar?

java - 在 Strategy 设计模式中使用抽象类代替接口(interface)

database - 关于维数灾难

database - 如何将 Pentaho 数据集成与 Amazon RDS 连接

c# - Nhibernate 拦截器 - 获取属性长度 OnSave

NHibernate QueryOver 投影、枚举和别名转换器

java - 多个类所需的依赖关系的设计模式(java)