0

使用 Spring 和 JDBCTemplates(无 ORM),我有一个针对 CMS 数据库的 DAO。

我现在需要访问另一个数据库。我应该创建一个单独的 DAO 还是使用一个大 DAO?在我的情况下,两者似乎都有效。我有一个接口,但它不是通用接口。除了 INSERT 到审计表之外,我所做的只是检索值。因此,根据此链接,我觉得我不需要为每个表提供单独的 CRUD 服务

我认为这并不重要,但一个数据库是 MySQL,另一个是 Oracle。

4

3 回答 3

4

您可以通过 Google 搜索了解 DAO 模式,但通常,您为每个“表”或一组相关表创建一个 DAO。我不知道这是否是您所说的“数据库”。有些人就是这样使用这些术语的。(您更新了问题以解释“数据库”。因此,每个数据库通常会有多个 DAO,每个表或一组相关表都有一个。)

所以“是”

注意:当我说“相关表”时,我可能需要解释一下。例如,如果您有一个 invoice 表和一个 invoice_detail 表。详细信息行通常类似于纸质发票上的一行,并且具有指向发票表中发票 ID 或发票编号的外键。有两个表,但您可能只有一个 DAO 来处理发票和与它们相关的详细信息。可能有一些方法可以通过发票编号和客户以及按日期获取发票,并且可能还可以获取一个月内在其中一个详细信息行中有特定项目的所有发票。将有一些方法可以创建发票并在其上创建所有行。等等。一个 DAO,但有多个表。

详细信息行可能有指向“零件”表的外键,其中包含零件的详细信息。您可能想阅读零件信息并将其与发票一起退回,并且您可能只想在阅读发票后单独阅读零件。在后一种情况下,将有第二个 DAO 具有读取和可能修改部件记录的方法。

这个例子假设这些都在同一个数据库中,无论是 MySQL 还是 Oracle。

于 2013-03-07T19:58:50.763 回答
1

您应该将 a 注入DataSource到您的 DAO 中,然后使用它来创建您的SimpleJdbcTemplate. 由于 aDataSource连接到特定数据库,因此您将需要为每个数据库单独的 DAO/ DataSources/ s。SimpleJdbcTemplate

于 2013-03-07T22:11:06.807 回答
0

在 Spring 应用程序中,每个表或数据实体可以有多个“DAO”,但您仍然应该隔离数据库调用,而且 Spring 需要知道不同的连接参数,并且可以使用 applicationContext 中的 DAO 定义来分离。这听起来像是一个 REST Web 服务的候选者来处理您从其他数据库中的检索。

于 2013-03-07T20:11:53.510 回答