基本上model的部份就是原本的商業邏輯,將系統分割為MVC的重要原因就是可以將web與非web的應用程式共用商業邏輯 (model)。Model的部份通常包括Entity及資料庫存取。
Entity通常用來儲存資料,可以用在View跟Controller的參數傳遞,也可以用在Controller及資料存取物件 (Data Access Object, DAO)的參數傳遞。
package com.example.demo.entity;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
public class Customer {
private String name;
private String address;
private int weight;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
}
在Spring Validation中,也將驗證的規則放在Entity中。
package com.example.demo.entity;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
public class Customer {
@NotNull
@Size(min=1)
private String name;
@NotNull
@Size(min=1)
private String address;
@Min(0)
private int weight;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
}
Data Access Object (DAO)是負責存取資料庫的內容,基本上內容跟上面的範例一樣,詳細內容請參考Spring JPA及Spring JDBC。
package com.example.demo.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Customer {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;
private String name;
private String address;
private int weight;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
}