Java 作为数据传输对象的持久性实体
我的web应用程序中有一些支持持久性的Java对象和所有的@Annotation。所有这些对象都位于数据层中。将这些持久性对象用作数据传输对象是最佳做法吗Java 作为数据传输对象的持久性实体,java,persistence,dto,Java,Persistence,Dto,我的web应用程序中有一些支持持久性的Java对象和所有的@Annotation。所有这些对象都位于数据层中。将这些持久性对象用作数据传输对象是最佳做法吗 例如,如果我想传回从数据存储中获取的数据,我应该直接返回那些持久性对象,还是应该手动将数据复制到中间DTO并将其传回其他层?您建议采用哪种方法?我从来都不需要通过将持久性实例复制到不同的DTO类来提供额外的抽象级别。如果您完全确定没有副本会最终出现在会话存储中,或者会持久化/迁移到另一个实例/任何其他实例,则无需这样做 如果您需要在多个会话/
例如,如果我想传回从数据存储中获取的数据,我应该直接返回那些持久性对象,还是应该手动将数据复制到中间DTO并将其传回其他层?您建议采用哪种方法?我从来都不需要通过将持久性实例复制到不同的DTO类来提供额外的抽象级别。如果您完全确定没有副本会最终出现在会话存储中,或者会持久化/迁移到另一个实例/任何其他实例,则无需这样做 如果您需要在多个会话/请求中保留这些对象,那么这是有意义的
另一个用例是,当您需要非常彻底地解耦loginc和持久层(即交换不同的持久层)时,通过注释的耦合可能会很麻烦。我认为这样做是可以的(事实上,这些ORM的主要优点是在不同的层中使用这些域对象,而不使用不必要的DTO),如果您遵循以下准则:
+说得好。这正是我们在产品中使用它们的方式。