java - 具有依赖关系(外键)的多个 DAO

标签 java database jdbc model dao

我正在创建一个具有数据库访问权限的应用程序。由于某些原因,我不使用 JPA 或 JooQ 或其他框架(并且不想使用。这对我的问题也不重要)。所以我使用 JDBC 并编写纯 sql。

我的模型是这样的:

public class Contact{
  AddressBook addressBok;
  String name;
  ...
}

我现在创建了 2 个 DAO,一个用于联系人和地址簿。我的联系人表有一个指向地址簿表 (address_book_id) 的外键。 我有一个服务类(例如 ContactService),它会使用相应的 DAO 读取每个对象并将其组合到一个联系人。

现在的问题是:我在 ContactDAO 的结果集中有 address_book_id。我如何将它传递给服务类,然后服务类使用 AddressBookDAO 读取相应的地址簿?由于模型是共享的,因此将 String addressBookId 放入 Contact 并不是一个好的解决方案,因为使用此模型的客户可能对数据库一无所知。

我知道这些问题,但没有关于如何做的答案: Using DAOs with composite Objects Can a DAO call DAO?

最佳答案

最佳做法是为每个表使用 POJO 域对象,您可以在其中保存您的关系字段,如 address_book_id。所以你会有树独立的类 Contact, Address, AddressBook 和独立的 DAO ContractDAO, AddressDAOAddressBookDAO。您的 ContactService 将使用这 6 个对象进行操作以加载、保存、修改相关数据。

关于java - 具有依赖关系(外键)的多个 DAO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30411920/

相关文章:

java - 打包 Servlet(编译时出现符号错误)

java - 我可以使用 keytool 创建没有密码的 Java 信任库吗?

database - 如何在数据库中存储一个或多个复选框值?

java - 如何通过cmd运行简单的jdbc连接程序

java - 我可以从 Java 文件构建结果集吗?

java - 如何在 Java 中监控外部文件

java - Docker 容器运行一台计算机而不是另一台计算机

php - 拉维尔 |在 2 个表中搜索

sql - 尝试添加外键时出现 ORA-00905 错误

java.sql.PreparedStatement.setString 函数使 Varchars 与 double 混淆