我试图在这里重写一堆DAO是设置:
我的主要问题是: 如何持久保存/检索由多个其他对象组成的业务对象? 例如我的CustomerDAO是否知道AddressDAO并从那里检索csutomers地址?
答案 0 :(得分:1)
只有普通的JDBC(没有任何JPA,ORM) 业务对象密切相关
在您希望链接业务对象时,不确定为什么不想使用JPA,但至少应该使用Spring JDBC模板来减轻您的某些样板代码。
关于其他约束,我会按如下方式进行:
DAO
方法,并在支持DAOImpl
的Spring JDBC模板中实现它们。在任何地方使用DAO并注入DAOImpl。我的两分钱!
答案 1 :(得分:0)
您可以考虑使用JOOQ。它不是JPA,但它可以很容易地用作替代解决方案。它足够轻巧。它还提供了一个反向工程工具,它将数据库实体构建为DAO对象。
我已经在相关的情况下嵌入了JOOQ,其中应用程序是经过精心设计的。我没有使用它的DAO功能,而是将其用作更高层,以避免弄乱JDBC层。
干杯!
答案 2 :(得分:0)
复合实体是DAO之上的一层。如果要删除所有耦合,DAO持久保存的域对象应该是平坦的,没有关系。请参阅Core J2EE模式CompositeEntity。
另外,最好不要在DAO之间引入耦合,将发现者放在另一个中。 E.g:
AddressDAO.findForCustomerId(ID);
不如使用第三个DAO来管理这种关系。即:
CustomerAddressRelDAO.findAddressForCustomer(ID);
如果您使用DAO关系,地址和客户都不会相互依赖(或了解)。