java - 作为数据传输对象的持久化实体

标签 java persistence dto

我的 Web 应用程序中有一些带有所有 @annotations 的具有持久性的 Java 对象。所有这些对象都驻留在一个数据层中。将这些持久化对象用作数据传输对象是最佳实践吗?

例如,如果我想传回从数据存储中获取的数据,我应该直接返回那些持久化对象还是我应该手动将数据复制到一个中间 DTO 并将其传回其他层?您建议采用哪种方法?

最佳答案

我会说这样做是可以的(事实上,这些 ORM 的主要优点是在不同的层中使用这些域对象而没有不必要的 DTO)如果您遵循以下准则:

  1. 您不扩展 session 边界,即,与数据库相关的任何更改都应始终使用您定义的数据访问层来完成,而不是通过其他层中的这些传递对象。
  2. 您在其他层(数据访问层之上的层,如业务逻辑层和表示层)中需要的任何数据都已预先填充到这些对象中,否则您将根据 ORM 行为获得异常。
  3. 不要为了解决第 2 条中提到的问题而扩展 session 边界

关于java - 作为数据传输对象的持久化实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3849987/

相关文章:

java - 如何在 Java 中将逗号分隔的字符串转换为 ArrayList

java - 如何在 JSP 中收集用户输入,以便将其存储在数据库中

Java 图像作为 OpenGL 纹理映射的 ByteBuffer

c# - 我的网络服务的这个 'layering' 是否正确?可以改进吗?

java - JPA 和 DTO,创建 DTO 的最佳方式?

java - 创建用于 JSCH API 的输入流。 ( java )

ios - NSUserDefaults 可以用于在 tvOS 上保存数据吗?

java - Persistence.xml 配置不正确

java - 与@JoinColumn 和@MapKeyColumn 保持@OneToMany 关系

spring - 如何在后期初始化中保留不可为空的属性