基于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(即時加載,默認值)和LAZY(懶加載),即時加載意味著當(dāng)實例化對象的時候必須加載該屬性值,懶加載是指當(dāng)實例化對象時不加載該屬性,只有當(dāng)調(diào)用該屬性時才加載。
optional用來指定屬性是否可空
有兩個選項:true(可空,默認值)和false
如果你在實體類屬性上不加@Basic注解,它也會自動加上@Basic,并使用默認值。
4.實例
是否懶加載舉例:參看我另外一篇文章:JPA @Basic單表查詢?nèi)绾螌崿F(xiàn)大字段懶加載
jpa @Basic和@Transient
@Basic 字段是個隱藏字段,一般都不用加他。因為@Entity里面的字段默認都相當(dāng)于加上@Basic了,就是要在數(shù)據(jù)庫生成。
但是如果有個字段不需要在數(shù)據(jù)庫生成。那么加上@Transient即可.
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解springboot整合ehcache實現(xiàn)緩存機制
這篇文章主要介紹了詳解springboot整合ehcache實現(xiàn)緩存機制,ehcache提供了多種緩存策略,主要分為內(nèi)存和磁盤兩級,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01
IntelliJ IDEA 2023.2正式發(fā)布新UI和Profiler轉(zhuǎn)正(最新推薦)
北京時間2023年7月26日,IntelliJ IDEA 2023.2正式發(fā)布,IntelliJ IDEA 2023.2 引入 AI Assistant(AI助手),通過一組由 AI 提供支持的功能助力開發(fā),今天給大家分享IntelliJ IDEA 2023.2正式發(fā)布新UI和Profiler轉(zhuǎn)正,感興趣的朋友一起看看吧2023-10-10
圖解Java?ReentrantLock的條件變量Condition機制
想必大家都使用過wait()和notify()這兩個方法把,他們主要用于多線程間的協(xié)同處理。而RenentrantLock也支持這樣條件變量的能力,而且相對于synchronized?更加強大,能夠支持多個條件變量,本文就來詳細說說2022-10-10
java swagger ui 添加header請求頭參數(shù)的方法
今天小編就為大家分享一篇java swagger ui 添加header請求頭參數(shù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Java Spring動態(tài)生成Mysql存儲過程詳解
這篇文章主要介紹了Java Spring動態(tài)生成Mysql存儲過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06

