Hibernate DTO和值对象映射

Jav*_*a P 9 hibernate

将hibernate实体带到表示层是一种好习惯吗?或者我们是否需要将实体的所有属性映射到值对象,并且值对象将用于UI?

请让我知道这两个方面的优点和缺点.

我们什么时候应该用什么?

Fir*_*iro 13

你称之为DTO的是ORM中的实体.它们通常是包含业务逻辑的域模型的一部分,并且大多数情况下包含的数据多于呈现单个视图所需的数据.我个人的经验法则

当DAL和视图之间没有传输层且几乎没有业务逻辑时,在视图中使用实体:

  • 好处:
    • 一个型号
    • 无需在模型之间进行映射
    • 更容易使用延迟加载
  • 缺点:
    • 模型中的每次更改都意味着更改视图
    • 许多有转移层的缺点见下文

当存在传输层和/或视图数据与实体不同或聚合许多不同实体时,将实体映射到DTO

  • 好处:
    • 当模型发生变化时,不必更改DTO /视图
    • 避免通过有大量问题的线路发送实体(延迟加载异常,发送许多不需要的数据,暴露敏感信息......)
    • 模型具有较少的职责(序列化),使其更易于重用(例如,后端处理)
  • 缺点:
    • 要写更多的课程
    • 将实体转换为DTO的代码