Spring DAO类应该只引用模型的一个对象吗?

时间:2015-09-03 02:23:26

标签: spring hibernate design-patterns dao one-to-one

我是Spring的新手,我会直截了当地说。我的应用程序中的图层似乎相当传统:

- Controller
- DTO
- Service    
- DAO
- Model

一般来说,DAO接口的每个实现是否只处理模型中的一个对象? (对不起,我只能找到真正没有面对这一点的琐碎例子) 可能在某种程度上是一对一的关系,双向,比如只有一个共享主键。 Hibernate并不关心,除了映射之外,它不能处理彼此的POJO引用。说有这种情况,即:

Table1: Parent        Table2: Child
------------------    ----------------------
| PARENT_ID (PK) |<---|CHILD_ID (PK and FK)|
------------------    ----------------------

需要分别维护更新:

parent.setChild(a_child); // private field of Parent.java
child.setParent(a_parent); // private field of Child.java

在哪里 - 查看上面提到的图层 - 实现这种逻辑的正确位置?如果Hibernate负责模型对象和DB之间的映射,那么谁应该是照顾模型的POJO对象之间的一致性的人?

我的标题问题是DAO是否可以处理模型中的几个POJO,DAO也可以保持这些POJO的一致性。

非常感谢 再见

1 个答案:

答案 0 :(得分:1)

您的DAO应该只考虑一个主要因素 - 业务责任

例如:

 AccountService <-->      AccountsDAO
                     |        |           |
            AccountsModel ClientModel BalanceModel

您无法将DAO限制为仅一种型号。 DAO应该执行它可以提供的功能来支持您的服务层。

你的hibernate / ORM模型只处理表之间的关系,他们不知道服务层期望的调用。

结束词:如果DAO是为了它自己的目的而设计的,DAO可以与许多模型/ POJO进行交互。