代码之家  ›  专栏  ›  技术社区  ›  Cybex

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

  •  0
  • Cybex  · 技术社区  · 7 年前

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

    与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 回复  |  直到 7 年前
        1
  •  1
  •   Antoine Gillet    7 年前

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

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