Spring DAO 类 应该只引用模型中的一个 object 吗?
Should Spring DAO classes refer only one object of the model?
我是新手Spring,我就开门见山了。我的应用程序中的层似乎相当传统:
- Controller
- DTO
- Service
- DAO
- Model
一般来说,DAO 接口的每个实现都应该只处理模型中的一个 object 吗? (抱歉,我只能找到真正没有面对这一点的微不足道的例子)
可能在 one-to-one 关系中的某个时候,双向的,比如只有一个共享主键。 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 负责模型的 objects 和 DB 之间的映射,那么谁应该负责模型的 POJO objects 之间的一致性?
我的标题问题想知道 DAO 是否可以处理模型中的多个 POJO,DAO 也可以保持这些 POJO 的一致性。
非常感谢
再见
你的 DAO 在设计时应该只考虑一件事情——商业责任。
例如:
AccountService <--> AccountsDAO
| | |
AccountsModel ClientModel BalanceModel
你不能将你的 DAO 限制为只有一种模型。 DAO 应该执行它可以提供的功能来支持您的服务层。
您的 hibernate/ORM 模型仅处理表之间的关系,它们不知道服务层期望的调用。
结束语:如果 DAO 是为自己的目的而设计的,DAO 可以与许多 Models/POJOs 交互。
我是新手Spring,我就开门见山了。我的应用程序中的层似乎相当传统:
- Controller
- DTO
- Service
- DAO
- Model
一般来说,DAO 接口的每个实现都应该只处理模型中的一个 object 吗? (抱歉,我只能找到真正没有面对这一点的微不足道的例子) 可能在 one-to-one 关系中的某个时候,双向的,比如只有一个共享主键。 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 负责模型的 objects 和 DB 之间的映射,那么谁应该负责模型的 POJO objects 之间的一致性?
我的标题问题想知道 DAO 是否可以处理模型中的多个 POJO,DAO 也可以保持这些 POJO 的一致性。
非常感谢 再见
你的 DAO 在设计时应该只考虑一件事情——商业责任。
例如:
AccountService <--> AccountsDAO
| | |
AccountsModel ClientModel BalanceModel
你不能将你的 DAO 限制为只有一种模型。 DAO 应该执行它可以提供的功能来支持您的服务层。
您的 hibernate/ORM 模型仅处理表之间的关系,它们不知道服务层期望的调用。
结束语:如果 DAO 是为自己的目的而设计的,DAO 可以与许多 Models/POJOs 交互。