0.使用场景
- 搭建个人博客时存储博客内容
- 在线商城系统中对商品的描述
test
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字段类型,则需要进行设置
-
-
实例代码
@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;
}
}