我的 Web 应用程序中有一些带有所有 @annotations 的具有持久性的 Java 对象。所有这些对象都驻留在一个数据层中。将这些持久化对象用作数据传输对象是最佳实践吗?
例如,如果我想传回从数据存储中获取的数据,我应该直接返回那些持久化对象还是我应该手动将数据复制到一个中间 DTO 并将其传回其他层?您建议采用哪种方法?
最佳答案
我会说这样做是可以的(事实上,这些 ORM 的主要优点是在不同的层中使用这些域对象而没有不必要的 DTO)如果您遵循以下准则:
- 您不扩展 session 边界,即,与数据库相关的任何更改都应始终使用您定义的数据访问层来完成,而不是通过其他层中的这些传递对象。
- 您在其他层(数据访问层之上的层,如业务逻辑层和表示层)中需要的任何数据都已预先填充到这些对象中,否则您将根据 ORM 行为获得异常。
- 不要为了解决第 2 条中提到的问题而扩展 session 边界
关于java - 作为数据传输对象的持久化实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3849987/