Spring Model
Spring Model
Spring Model
基本概念
基本概念
基本上model的部份就是原本的商業邏輯,將系統分割為MVC的重要原因就是可以將web與非web的應用程式共用商業邏輯 (model)。Model的部份通常包括Entity及資料庫存取。
Entity
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
Data Access Object
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;
}
}
命名規則
命名規則
- 要有意義,所以名稱都應該有意義,避免類似「i」、「i」、「firstVariable」等無法代表變數內容的名稱。
- 類別名: 類別名的第一個字一律大寫,如果是由多個字組成,每個字的開頭一律大寫,如:PurchaseOrder。
- 物件名: 物件名的第一個字一律小寫,如果是由多個字組成,除第一個以外,每個字的開頭一律大寫,如:purchaseOrder。
- 屬性(變數)名: 屬性的第一個字一律小寫,如果是由多個字組成,除第一個以外,每個字的開頭一律大寫,如:reorderPoint,習慣上不再冠類別名,(如:在Customer裡,不用customerName,而是,name)。
- 方法名: 方法的第一個字一律小寫,如果是由多個字組成,除第一個以外,每個字的開頭一律大寫,如:getReorderPoint,另外,取得內容一律用get開頭 (稱為getter),設定內容一律用set開頭(稱為setter),回傳狀態一律用is開頭,如:isEmpty()。在eclipse可以直接產生setter跟getter。
參考資料
參考資料