在您的场景中,#1是最佳选择,因为#2会产生过多的开销.
1)在我的MysqlUserDao中创建一个函数:getUsersAndOrders(选择用户.,订单.来自用户加入订单)我的用户DTO应该有一个OrderList属性在哪里我下订单?
澄清:
1:如果您的数据库具有良好的设计,那么每个表的DAO是一个很好的方法.在某些情况下,您可以将DAO合并在一起(例如:继承).
2:是的.它应该是一个普通的bean(或POJO,如果你想).我建议创建另一个图层,您可以在其中定义工作流程.我似乎有人将这个额外的层称为模型,有时称为DataManager,有时只是管理器.
例如:创建订单时,您应在Order表中插入记录,并在Notification表中插入记录(因为每次创建订单时都会通过电子邮件通知最终用户)
class OrderManager {
private OrderDAO oDao;
private NotificationDao nDao;
public saveOrder(OrderDTO o) {
Long orderId = oDao.save(o);
NotificationDTO n = new NotificationDTO();
n.setType(NotificationType.ORDER_CREATED);
n.setEntityId(orderId);
nDao.save(n);
}
}
更新:
在大多数情况下,我们可以说:
>“经理”可以处理许多DAO;
> DAO不应包含其他DAO并且与DTO绑定;
> DTO可以包含其他DTO
在处理集合时,有一个重要的想法是LAZY或EAGER负载.但这是另一个主题:D