基于JPA中的@Basic注解詳解
今天我們來聊聊JPA @Basic注解的使用
1.介紹:
@Basic 是實(shí)體類與數(shù)據(jù)庫字段映射時(shí)最簡單的類型。
在該注解的介紹中:
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),包裝類,枚舉類,以及實(shí)現(xiàn)了Serializable接口的類型。
剛開始對實(shí)例變量有點(diǎn)不太理解,起始簡單說:實(shí)例變量就是類中的一個(gè)屬性,在創(chuàng)建對象的時(shí)候我們會(huì)去初始化它。與方法中局部變量區(qū)分。
引出問題1:難道@Basic注解還可以用于非持久化類嗎?
2.用的位置
@Target({METHOD, FIELD})
可以用在類屬性上以及Getter方法上
3.用途
@basic注解有兩個(gè)屬性:
FetchType fetch() default EAGER; boolean optional() default true;
fetch用來指定屬性的加載機(jī)制
有兩個(gè)選項(xiàng):EAGER(即時(shí)加載,默認(rèn)值)和LAZY(懶加載),即時(shí)加載意味著當(dāng)實(shí)例化對象的時(shí)候必須加載該屬性值,懶加載是指當(dāng)實(shí)例化對象時(shí)不加載該屬性,只有當(dāng)調(diào)用該屬性時(shí)才加載。
optional用來指定屬性是否可空
有兩個(gè)選項(xiàng):true(可空,默認(rèn)值)和false
如果你在實(shí)體類屬性上不加@Basic注解,它也會(huì)自動(dòng)加上@Basic,并使用默認(rèn)值。
4.實(shí)例
是否懶加載舉例:參看我另外一篇文章:JPA @Basic單表查詢?nèi)绾螌?shí)現(xiàn)大字段懶加載
jpa @Basic和@Transient
@Basic 字段是個(gè)隱藏字段,一般都不用加他。因?yàn)锧Entity里面的字段默認(rèn)都相當(dāng)于加上@Basic了,就是要在數(shù)據(jù)庫生成。
但是如果有個(gè)字段不需要在數(shù)據(jù)庫生成。那么加上@Transient即可.
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解springboot整合ehcache實(shí)現(xiàn)緩存機(jī)制
這篇文章主要介紹了詳解springboot整合ehcache實(shí)現(xiàn)緩存機(jī)制,ehcache提供了多種緩存策略,主要分為內(nèi)存和磁盤兩級,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
IntelliJ IDEA 2023.2正式發(fā)布新UI和Profiler轉(zhuǎn)正(最新推薦)
北京時(shí)間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機(jī)制
想必大家都使用過wait()和notify()這兩個(gè)方法把,他們主要用于多線程間的協(xié)同處理。而RenentrantLock也支持這樣條件變量的能力,而且相對于synchronized?更加強(qiáng)大,能夠支持多個(gè)條件變量,本文就來詳細(xì)說說2022-10-10
java swagger ui 添加header請求頭參數(shù)的方法
今天小編就為大家分享一篇java swagger ui 添加header請求頭參數(shù)的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Java Spring動(dòng)態(tài)生成Mysql存儲(chǔ)過程詳解
這篇文章主要介紹了Java Spring動(dòng)態(tài)生成Mysql存儲(chǔ)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06

