【发布时间】:2010-10-03 13:46:01
【问题描述】:
我有一些具有持久性的 Java 对象,其中包含我的 Web 应用程序中的所有 @annotations。所有这些对象都驻留在数据层中。将这些持久性对象用作数据传输对象是否是最佳实践?
例如,如果我想传回从数据存储中获取的数据,我应该直接返回那些持久性对象还是应该手动将数据复制到中间 DTO 并将其传回其他层?您会建议哪种方法?
【问题讨论】:
标签: java persistence dto
我有一些具有持久性的 Java 对象,其中包含我的 Web 应用程序中的所有 @annotations。所有这些对象都驻留在数据层中。将这些持久性对象用作数据传输对象是否是最佳实践?
例如,如果我想传回从数据存储中获取的数据,我应该直接返回那些持久性对象还是应该手动将数据复制到中间 DTO 并将其传回其他层?您会建议哪种方法?
【问题讨论】:
标签: java persistence dto
如果您遵循以下准则,我会说这样做是可以的(事实上,这些 ORM 的主要优势是在不同的层中使用这些域对象而没有不必要的 DTO):
【讨论】:
如果您绝对确定没有副本最终会在 Session 存储中或将被持久化/迁移到另一个实例/无论如何,则无需这样做。
如果您需要在多个会话/请求中保留这些对象,那么这是有道理的。
另一个用例是当您需要非常彻底地解耦 loginc 和持久层(即交换不同的持久层)时,通过注释进行耦合可能会很麻烦。
【讨论】:
我从来不需要通过将持久性实例复制到不同的 DTO 类来提供额外的抽象级别。
【讨论】: