SpringBoot JPA注解詳解


1.@OneToOne
2.@OneToMany
targetEntity: 默認關聯的實體類型。如果集合類中指定了具體類型了,不需要使用targetEntity.否則需要targetEntity指定
Cascade: 級聯操作
CascadeType. PERSIST 級聯持久化 ( 保存 ) 操作
CascadeType. MERGE 級聯更新 ( 合並 ) 操作
CascadeType. REFRESH 級聯刷新操作,只會查詢獲取操作
CascadeType. REMOVE 級聯刪除操作
CascadeType. ALL 級聯以上全部操作
Fetch: 抓取是否延遲加載,默認情況一的方為立即加載FetchType.EAGER,多的一方為延遲加載FetchType.LAZY
mappedBy: 關系維護
3.@ManyToOne
4.@ManyToMany
5.@JoinColumn
6.不加注解 默認 @Basic
@Basic 表示一個簡單的屬性到數據庫表的字段的映射,對於沒有任何標注的 getXxxx() 方法,默認即為@Basic
fetch: 表示該屬性的讀取策略,有 EAGER 和 LAZY 兩種,分別表示主支抓取和延遲加載,默認為 EAGER.
optional:表示該屬性是否允許為null, 默認為true
設置POJO為實體 @Entity
@Entity
public class Demo {
}
設置表名 @Table
@Table(name = "demo", schema = "sd")
public class Demo {
}
設置主鍵 @Id
@Id
private String id;
設置字段類型 @Column
name:字段名
unique:是否唯一
nullable:是否可以為空
inserttable:是否可以插入
updateable:是否可以更新
columnDefinition: 定義建表時創建此列的DDL
secondaryTable: 從表名。如果此列不建在主表上(默認建在主表),該屬性定義該列所在從表的名字。
@Column(name = "user_code", nullable = false, length=32)//設置屬性userCode對應的字段為user_code,長度為32,非空
private String userCode;
@Column(name = "user_wages", nullable = true, precision=12, scale=2)//設置屬性wages對應的字段為user_wages,12位數字可保留兩位小數,可以為空
private double wages;
@Temporal(TemporalType.DATE)//設置為時間類型
private Date joinDate;
字段排序,在加載數據的時候可以為其指定順序 @OrderBy
@OrderBy("group_name ASC, name DESC")
private List<Demo> books = new ArrayList<Demo>();
7.主鍵生成策略 @GeneratedValue
TABLE:使用一個特定的數據庫表格來保存主鍵。
SEQUENCE:根據底層數據庫的序列來生成主鍵,條件是數據庫支持序列。
IDENTITY:主鍵由數據庫自動生成(主要是自動增長型)
AUTO:主鍵由程序控制(也是默認的,在指定主鍵時,如果不指定主鍵生成策略,默認為AUTO)
數據庫對GeneratorValue4種策略的支持情況如下:
MYSQL
GenerationType.TABLE
GenerationType.AUTO
GenerationType.IDENTITY
不支持GenerationType.SEQUENCE
ORACLE
strategy=GenerationType.AUTO
GenerationType.SEQUENCE
GenerationType.TABLE
不支持GenerationType.IDENTITY
GenerationType.TABLE
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator="payablemoney_gen")
@TableGenerator(name = "pk_gen", table="tb_generator",
pkColumnName="gen_name", valueColumnName="gen_value",
pkColumnValue="PAYABLEMOENY_PK", allocationSize=1)
private String id;
GenerationType.SEQUENCE
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator="payablemoney_seq")
@SequenceGenerator(name="payablemoney_seq", sequenceName="seq_payment")
private String id;
GenerationType.IDENTITY
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private String id;
GenerationType.AUTO
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private String id;
8.主鍵生成策略 @GenericGenerator
@GenericGenerator注解是hibernate所提供的自定義主鍵生成策略生成器,由@GenericGenerator實現多定義的策略。所以,它要配合@GeneratedValue一起使用,並且@GeneratedValue注解中的”generator”屬性要與@GenericGenerator注解中name屬性一致,strategy屬性表示hibernate的主鍵生成策略。
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator="payablemoney_seq")
@GenericGenerator(name = "payablemoney_seq", strategy = "uuid")
private String id;
@GenericGenerator支持13種策略,分別是:
GENERATORS.put("uuid", UUIDHexGenerator.class);
GENERATORS.put("hilo", TableHiLoGenerator.class);
GENERATORS.put("assigned", Assigned.class);
GENERATORS.put("identity", IdentityGenerator.class);
GENERATORS.put("select", SelectGenerator.class);
GENERATORS.put("sequence", SequenceGenerator.class);
GENERATORS.put("seqhilo", SequenceHiLoGenerator.class);
GENERATORS.put("increment", IncrementGenerator.class);
GENERATORS.put("foreign", ForeignGenerator.class);
GENERATORS.put("guid", GUIDGenerator.class);
GENERATORS.put("uuid.hex", UUIDHexGenerator.class); //uuid.hex is deprecated
GENERATORS.put("sequence-identity", SequenceIdentityGenerator.class);
9.大字段 @Lob
@Lob // 對應Blob字段類型
@Column(name = "PHOTO")
private Serializable photo;
@Lob // 對應Clob字段類型
@Column(name = "DESCRIPTION")
private String description;
10.瞬時字段 @Transient
@Transient // 不需要與數據庫映射的字段,在保存的時候不需要保存倒數據庫
private Date testDate;
11.根據時區格式化時間 @JsonFormat
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+08")
private Date createTime;
12.@NotFound
action:用來指定引用的外鍵不存在時將如何處理
NotFoundAction.EXCEPTION (默認)拋出異常
NotFoundAction.IGNORE 忽略
13.@Where
clause:數據過慮,寫過濾條件即可
@OneToMany(mappedBy = "cost", fetch = FetchType.LAZY, cascade = { CascadeType.ALL }, orphanRemoval = true)
@Where(clause = "del_flag = 0")
public List<CostVasItem> getItems() {
return items;
}
14.允許跨域請求 @CrossOrigin
@CrossOrigin(origins = "*")
---------------------
作者:抽離的心
來源:CSDN
原文:https://blog.csdn.net/u011635492/article/details/80150791


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM