【发布时间】:2012-07-28 19:51:19
【问题描述】:
我正在使用 SpringMVC、JPA2 开发一个简单的论坛 Web 应用程序。 我创建了反映数据库表结构的 JPA 实体,例如用户、论坛、帖子等。
但在 UI 上显示数据时,我需要 DTO,因为我不能始终使用实体保存要在 UI 上显示的数据。
例如:更改密码屏幕。在这里我需要保存旧密码、新密码和确认新密码。但是用户实体不会有旧/新/确认密码字段,它只有密码。所以我需要创建 DTO,它们只是 Web 和服务层之间的数据载体。
我的问题是在创建 DTO 对象时,我应该将所有属性放在 DTO 本身中还是将实体包装在 DTO 中并添加所需的其他属性?
例如:对于编辑用户屏幕,
public class UserDTO
{
private User user; // User is a JPA entity
// setters & getters
}
有了这个,我可以将底层的用户实体传递给我的服务层。但是在将 UI 属性绑定到 DTO 时,我需要关联 PropertyEditors。
(或)
public class UserDTO
{
private String userId;
private String userName;
private String password;
// setters & getters
}
使用这种方法,我需要将 DTO 属性转换并复制到 JPA 实体中并传递给服务层。
哪种方法更好?或者有没有其他完全没有 DTO 的方法?
【问题讨论】:
标签: java spring oop spring-mvc