0.使用場景
- 搭建個人博客時存儲博客內容
- 在線商城系統中對商品的描述
1.如何創建
-
需要用到的注解
- @Lob
@Lob標注表示將屬性映射成數據庫支持的大對象類型,Clob或者Blog。其中:
- Clob(Character Large Ojects)類型是長字符串類型,java.sql.Clob、 Character[]、char[] 和 String 將被映射為 Clob 類型。
- Blob(Binary Large Objects)類型是字節類型,java.sql.Blob、Byte[]、byte[] 和 實現了Serializable接口的類型將被映射為 Blob 類型。
-
@Basic
@Basic表示屬性到數據庫表的字段的映射。一個@Entity標注的實體類中的屬性,如果沒有任何標注,默認即為@Basic,比如User類中的name和email屬性。
@Basic有兩個常用屬性:- fetch: 表示實體類對應屬性的讀取策略,有EAGER和LAZY兩種取值,分別表示主動抓取和延遲加載,默認值為EAGER。
- optional:表示該屬性是否允許為null,默認值為true。
因為這兩種類型(Clob or Blob)的數據一般占用的內存空間比較大,所以通常使用延遲加載的方式,與@Basic標注同時使用,設置加載方式為FetchType.LAZY。
-
@Column(columnDefinition = "text")
當實體類的屬性與其映射的數據庫表的列名稱不同時,可以使用@Colunm標注。該標注描述了數據庫表中該字段的詳細定義
columnDefinition:表示該字段在數據庫中的實際類型。通常ORM框架可以根據屬性類型自動判斷數據庫中字段的類型,但是依然有些例外:
- Date類型無法確定數據庫中字段類型究竟是DATE、TIME還是TIMESTAMP
- String的默認映射類型為VARCHAR,如果希望將String類型映射到特定數據庫的BLOB或TEXT字段類型,則需要進行設置
- @Lob
-
實例代碼
@Entity
public class Commodity {//商品
@Id @Column(length = 20) private String cid;
@Column(length = 40) private String cname;
private Integer price;//價格
private Integer stock_quantity;//庫存數量
private Integer Sales_volume;//銷售數量
@Lob @Basic(fetch = FetchType.LAZY) @Column(columnDefinition = "text") private String description;//商品商品描述
@ManyToOne(cascade = CascadeType.ALL) private Category category;
public Commodity(){
}
public String getCid() {
return cid;
}
public void setCid(String cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Integer getStock_quantity() {
return stock_quantity;
}
public void setStock_quantity(Integer stock_quantity) {
this.stock_quantity = stock_quantity;
}
public Integer getSales_volume() {
return Sales_volume;
}
public void setSales_volume(Integer sales_volume) {
Sales_volume = sales_volume;
}
public Category getCategory() {
return category;
}
public void setCategory(Category category) {
this.category = category;
}
}