Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 涉及多个数据源之间交互的设计模式_Java_Design Patterns_Jakarta Ee_Dao - Fatal编程技术网

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

Java 涉及多个数据源之间交互的设计模式,java,design-patterns,jakarta-ee,dao,Java,Design Patterns,Jakarta Ee,Dao,我一直使用DAO模式进行CRUD操作,每个DAO负责一次访问唯一的数据源,并使用泛型支持多个实体 现在我需要同样的修改,如下所示 1.-数据源将在运行时动态添加/删除 2.-例如,工作单元涉及:从数据源A读取数据,在B上写入数据,如果B成功,则从A中删除数据。A和B将是可互换的,这使我想到某种来源/目的地机制 3.-仅对1个数据源执行读取 所有数据源中的实体都是相同的,为此我可以添加一个工厂,在添加数据源时创建一个新的DAO,回答第一个问题。但我不知道如何解决其余的问题 刀型还合适吗?如果是,需

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

现在我需要同样的修改,如下所示

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

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

3.-仅对1个数据源执行读取

所有数据源中的实体都是相同的,为此我可以添加一个工厂,在添加数据源时创建一个新的DAO,回答第一个问题。但我不知道如何解决其余的问题


刀型还合适吗?如果是,需要添加什么?还是有一种不同的方法作为一个整体?

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

如果
Spring
是应用程序堆栈的一部分,您可以使用
AbstractRoutingDataSource
,这将为添加动态
数据源
映射提供灵活性。如果你没有阅读它的源代码,你可以构建你自己的逻辑,类似的东西

在快速的谷歌上,我发现了这个。
它解释了这种动态路由的作用。

我理解,但数据源的数量是可变的,可能是定义源/目标操作的一种方式?我相信,您已经知道如何使用DAO工厂解决第一个问题。