在Spring MVC中使用域对象作为表单支持对象是一种不好的做法吗?

时间:2018-02-23 09:37:28

标签: java spring forms spring-mvc dto

在Spring MVC中使用Event实例作为表单支持对象是不是很糟糕?

与DTO相比,此方法的一个问题是客户端可以更改视图中的隐藏字段,并且您需要检查并重置它们。 但还有其他人吗?

@Entity
@Table(name = "events")
public class Event
    {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "event_id")
    public int id;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id")
    public User userId;

    @Column(name = "amount")
    @NotEmpty(message = "Amount can't be empty")
    public int amount;

    @Column(name = "description")
    @NotEmpty(message = "Description can't be empty")
    public String description;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "entered_by")
    public User enteredBy;

    @Column(name = "entered_at", columnDefinition = "DATETIME")
    @Temporal(TemporalType.TIMESTAMP)
    public Date enteredAt;

    }

1 个答案:

答案 0 :(得分:1)

正如你所说,DTO的主要目标是隔离。 您并不总是希望客户端查看/访问您在数据库端的所有字段。

此外,您可以使用DTO聚合来自各种表/服务的多个调用,并使用一个表单对象将其返回到客户端。