基于JPA中的@Basic注解詳解
今天我們來聊聊JPA @Basic注解的使用
1.介紹:
@Basic 是實體類與數(shù)據(jù)庫字段映射時最簡單的類型。
在該注解的介紹中:
The <code>Basic</code> annotation can be applied to a persistent * property or instance variable of any of the following types: Java * primitive types, wrappers of the primitive types, <code>String</code>, * <code>java.math.BigInteger</code>, * <code>java.math.BigDecimal</code>, * <code>java.util.Date</code>, * <code>java.util.Calendar</code>, * <code>java.sql.Date</code>, * <code>java.sql.Time</code>, * <code>java.sql.Timestamp</code>, <code>byte[]</code>, <code>Byte[]</code>, * <code>char[]</code>, <code>Character[]</code>, enums, and any other type that * implements <code>java.io.Serializable</code>
我們可以看到,它可以用于持久類屬性或?qū)嵗兞浚╥nstance variable)上,類型包含java基本類型(byte,short,int,long,float,double,char,boolean),包裝類,枚舉類,以及實現(xiàn)了Serializable接口的類型。
剛開始對實例變量有點不太理解,起始簡單說:實例變量就是類中的一個屬性,在創(chuàng)建對象的時候我們會去初始化它。與方法中局部變量區(qū)分。
引出問題1:難道@Basic注解還可以用于非持久化類嗎?
2.用的位置
@Target({METHOD, FIELD})
可以用在類屬性上以及Getter方法上
3.用途
@basic注解有兩個屬性:
FetchType fetch() default EAGER; boolean optional() default true;
fetch用來指定屬性的加載機制
有兩個選項:EAGER(即時加載,默認(rèn)值)和LAZY(懶加載),即時加載意味著當(dāng)實例化對象的時候必須加載該屬性值,懶加載是指當(dāng)實例化對象時不加載該屬性,只有當(dāng)調(diào)用該屬性時才加載。
optional用來指定屬性是否可空
有兩個選項:true(可空,默認(rèn)值)和false
如果你在實體類屬性上不加@Basic注解,它也會自動加上@Basic,并使用默認(rèn)值。
4.實例
是否懶加載舉例:參看我另外一篇文章:JPA @Basic單表查詢?nèi)绾螌崿F(xiàn)大字段懶加載
jpa @Basic和@Transient
@Basic 字段是個隱藏字段,一般都不用加他。因為@Entity里面的字段默認(rèn)都相當(dāng)于加上@Basic了,就是要在數(shù)據(jù)庫生成。
但是如果有個字段不需要在數(shù)據(jù)庫生成。那么加上@Transient即可.
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中的CyclicBarrier循環(huán)柵欄深入解析
這篇文章主要介紹了Java中的CyclicBarrier循環(huán)柵欄深入解析,CycleBarrier 它就相當(dāng)于是一個柵欄,所有線程在到達(dá)柵欄后都需要等待其他線程,等所有線程都到達(dá)后,再一起通過,需要的朋友可以參考下2023-12-12SpringBoot使用Kafka來優(yōu)化接口請求的并發(fā)方式
這篇文章主要介紹了SpringBoot使用Kafka來優(yōu)化接口請求的并發(fā)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07SpringBoot Maven打包失敗報:class lombok.javac.apt.Lombo
最新項目部署的時候,出現(xiàn)了一個maven打包失敗的問題,報:class lombok.javac.apt.LombokProcessor錯誤,所以本文給大家介紹了如何解決SpringBoot Maven 打包失?。篶lass lombok.javac.apt.LombokProcessor 錯誤,需要的朋友可以參考下2023-12-12