涉及多个数据源之间交互的设计模式

时间:2012-07-06 03:56:11

标签: java design-patterns java-ee dao

我一直使用DAO模式进行CRUD操作,每个DAO一次负责访问一个唯一的数据源,并使用泛型来支持多个实体。

现在我需要进行以下更改

1.-数据源将在运行时动态添加/删除

2.-工作单元涉及例如:从数据源A读取,在B上写入,如果B成功则从A中删除。 A和B可以互换,这让我想到某种起源/目的地机制。

3.-只对1个数据源进行读取

实体在所有数据源中都是相同的,为此我可以添加一个工厂,只要添加数据源就会创建一个新的DAO,回答第一个问题。但我不知道如何处理剩下的事情。

DAO模式是否仍然合适?如果是,需要添加什么?或者整体上有不同的方法吗?

2 个答案:

答案 0 :(得分:1)

如果Spring是您的应用程序堆栈的一部分,您可以使用AbstractRoutingDataSource,这样可以灵活地添加动态datasource映射。如果没有通过它的源代码,你可以构建自己的逻辑类似于此。

在快速谷歌上,我遇到了这个http://blog.springsource.org/2007/01/23/dynamic-datasource-routing/。 它正在解释这种动态路由。

答案 1 :(得分:0)

这听起来像商业交易。您需要一个涵盖事务的业务组件,其中涉及多个DAO。