我正在创建一个具有数据库访问权限的应用程序。由于某些原因,我不使用 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
, AddressDAO
,AddressBookDAO
。您的 ContactService
将使用这 6 个对象进行操作以加载、保存、修改相关数据。
关于java - 具有依赖关系(外键)的多个 DAO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30411920/