每个数据库连接一个DAO?

问题描述:

使用Spring和JDBCTemplates(无ORM),我有一个DAO是违背了CMS数据库。每个数据库连接一个DAO?

我现在有一个需要访问其它数据库。我应该创建一个单独的DAO还是使用一个大的DAO?要么在我的情况下工作。我有一个接口,但它不是一个通用接口。除了插入到审计表中,我所做的只是检索值。所以我不觉得我需要为每个表单独提供一个CRUD服务,根据这个link

我不认为它真的很重要,但一个数据库是MySQL,另一个是Oracle。

您可以通过谷歌搜索,但阅读有关DAO模式,在一般情况下,为每个相关的表“表”或组创建一个DAO。我不知道这是'数据库'的意思。有些人使用这种方式。 (你更新你的问题解释“数据库”所以,你会通常有每个数据库的多个DAO每桌一个或一组相关的表。)

所以“是”

注意:当我说“相关表“我可能需要解释。例如,如果您有发票表和invoice_detail表。详细信息行通常会像纸质发票上的一行,并将外键返回到发票表中的发票编号或发票编号。有两张表,但你可能会有一个单独的DAO来处理发票和与它们相关的细节。可能有一些方法可以按发票号码和客户及其一大堆日期获得发票,也可以在一个月内获取具有特定项目的所有发票。将会有方法来创建发票并在其上创建所有的行。等等。一个DAO,但多个表。

细节线可能有外键指向了一个“零件”表上的部分细节。您可能需要阅读零件信息并将其与发票一起寄回,并且您在阅读发票后可能需要单独阅读零件。在后一种情况下,将有第二个DAO具有读取和可能修改零件记录的方法。

这个例子假设这些都在同一个数据库中,无论是MySQL或甲骨文。

你可以为每个表或数据实体的多个“道”在Spring应用程序,但你还是应该隔离你的数据库调用加上春季需要知道不同的连接参数,并可以在ApplicationContext中使用DAO的定义分开。这听起来像是一个REST Web服务的候选人来处理您从其他数据库中检索。

你应该注入到DataSource你的DAO,你反过来用于创建SimpleJdbcTemplate。由于DataSource连接到特定数据库,因此您需要为每个数据库单独使用DAO/DataSource s/SimpleJdbcTemplate