我的Web应用程序中包含所有@annotations的一些具有持久性能力的Java对象。所有这些对象都驻留在数据层中。将这些持久性对象用作数据传输对象是最佳做法吗?
例如,如果我想传回从数据存储中获取的数据,我是应该直接返回这些持久性对象还是应该手动将数据复制到中间DTO并将其传递回其他层?你会建议采用哪种方法?
答案 0 :(得分:1)
如果您绝对确定没有副本会在会话存储中结束,或者将被持久化/迁移到另一个实例/其他任何实例,则无需执行此操作。
如果您需要将这些对象保留在多个会话/请求中,那么它是有意义的。
另一个用例是当你需要非常彻底地解耦loginc和持久层时(即交换不同的持久层),那么通过注释的耦合可能很麻烦。
答案 1 :(得分:1)
我想说这样做是可以的(事实上,如果您遵循以下准则,这些ORM的主要优点是在不同的层中使用这些域对象而没有不必要的DTO):
答案 2 :(得分:0)
我从未需要通过将持久性实例复制到不同的DTO类来提供额外的抽象级别。