在一个完整的 Java EE 应用程序中,如果它是集群的,那么 DTO 模式仍然是一个有效的选项吗?此应用程序使用 EJBs Hibernate 和 Struts 与 Spring 等。在这种情况下传输领域对象是否存在任何问题?
编辑:为了澄清我的问题,随着现代资源和 Java EE 改进的提高,有理由不使用领域对象吗?如果没有,那么 DTO 模式是否正在逐渐淡出,并且不应该在新应用程序中使用?
在一个完整的 Java EE 应用程序中,如果它是集群的,那么 DTO 模式仍然是一个有效的选项吗?此应用程序使用 EJBs Hibernate 和 Struts 与 Spring 等。在这种情况下传输领域对象是否存在任何问题?
编辑:为了澄清我的问题,随着现代资源和 Java EE 改进的提高,有理由不使用领域对象吗?如果没有,那么 DTO 模式是否正在逐渐淡出,并且不应该在新应用程序中使用?
“DTO模式”并未被弃用。是否应使用DTO模式取决于应用程序架构。例如,在开发Web服务(使用JAX-WS或JAX-RS)时,应通过Web方法发送DTO,以便C#或Python客户端应用程序可以使用它,并且您的Web方法不应返回具有Hibernate注释或其他业务逻辑的对象类,记住在其他语言中,实体将不会创建带有这些注释或其他业务逻辑。
结论:DTO不是反模式。只有在需要从一个子系统传递数据到另一个子系统,并且它们没有默认或标准的通信方式时,才应使用DTO。
这是Java EE中非常有用的一种模式。
我使用DTO将相关实体对象从EJB bean传输到UI层。实体对象在“一个交易”中从数据库中获取(参见TransactionAttributeType.REQUIRED),并存储在DTO对象中。DTO在UI层中被使用。