gpt4 book ai didi

java - 在 hibernate 实体和数据传输对象之间转换的好模式是什么?

转载 作者:IT老高 更新时间:2023-10-28 20:44:58 28 4
gpt4 key购买 nike

对于如何在 Hibernate 实体和要由 Web 服务返回的数据传输对象之间进行转换,我有类似的问题和顾虑,如本问题所述:

Is using data transfer objects in ejb3 considered best practice

这里提到的一个因素是,如果域模型发生变化,一组 DTO 将在 Web 服务的情况下保护消费者。

尽管它似乎会为我的项目添加大量代码,但这种推理似乎是合理的。

是否有一个好的设计模式可以用来将 Hibernate 实体(实现接口(interface))转换为实现相同接口(interface)的 DTO?

因此假设以下两个都实现了“Book”,我需要将 BookEntity.class 转换为 BookDTO.class,以便让 JAXB 序列化并返回。

再一次,这整个前景对我来说似乎是可疑的,但如果有好的模式可以帮助处理这种转换,我很想得到一些见解。

是否有一些有趣的方法可以通过反射进行转换?还是我没有想到的“ builder ”模式?

我应该忽略 DTO 模式并传递实体吗?

最佳答案

Should I just ignore the DTO pattern and pass entities around?

我的偏好通常是"is"。我不喜欢仅仅为了架构或层纯度而创建的并行层次结构的想法。

DTO 模式的最初原因是在将实体 EJB 传递到 View 层时,EJB 1.0 和 2.0 应用程序过于繁琐。解决方案是将实体 bean 状态放入 DTO。

创建 DTO 通常给出的另一个原因是禁止 View 层进行修改。在这种情况下,DTO 是不可变对象(immutable对象),没有任何行为。他们只是将数据传送到 View 层。

我认为 DTO 是一种已成为反模式的核心 J2EE 模式。

我知道有些人会不同意。我只是提供我的意见。这不是唯一的方法,也不一定是“正确”的方法。这是我的偏好。

关于java - 在 hibernate 实体和数据传输对象之间转换的好模式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4558233/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com