基于JPA中的@Basic注解詳解
今天我們來(lái)聊聊JPA @Basic注解的使用
1.介紹:
@Basic 是實(shí)體類與數(shù)據(jù)庫(kù)字段映射時(shí)最簡(jiǎn)單的類型。
在該注解的介紹中:
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接口的類型。
剛開(kāi)始對(duì)實(shí)例變量有點(diǎn)不太理解,起始簡(jiǎn)單說(shuō):實(shí)例變量就是類中的一個(gè)屬性,在創(chuàng)建對(duì)象的時(shí)候我們會(huì)去初始化它。與方法中局部變量區(qū)分。
引出問(wèn)題1:難道@Basic注解還可以用于非持久化類嗎?
2.用的位置
@Target({METHOD, FIELD})
可以用在類屬性上以及Getter方法上
3.用途
@basic注解有兩個(gè)屬性:
FetchType fetch() default EAGER; boolean optional() default true;
fetch用來(lái)指定屬性的加載機(jī)制
有兩個(gè)選項(xiàng):EAGER(即時(shí)加載,默認(rèn)值)和LAZY(懶加載),即時(shí)加載意味著當(dāng)實(shí)例化對(duì)象的時(shí)候必須加載該屬性值,懶加載是指當(dāng)實(shí)例化對(duì)象時(shí)不加載該屬性,只有當(dāng)調(diào)用該屬性時(shí)才加載。
optional用來(lái)指定屬性是否可空
有兩個(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ù)庫(kù)生成。
但是如果有個(gè)字段不需要在數(shù)據(jù)庫(kù)生成。那么加上@Transient即可.
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java中的CyclicBarrier循環(huán)柵欄深入解析
這篇文章主要介紹了Java中的CyclicBarrier循環(huán)柵欄深入解析,CycleBarrier 它就相當(dāng)于是一個(gè)柵欄,所有線程在到達(dá)柵欄后都需要等待其他線程,等所有線程都到達(dá)后,再一起通過(guò),需要的朋友可以參考下2023-12-12Java CAS基本實(shí)現(xiàn)原理代碼實(shí)例解析
這篇文章主要介紹了Java CAS基本實(shí)現(xiàn)原理代碼實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07SpringBoot使用Kafka來(lái)優(yōu)化接口請(qǐng)求的并發(fā)方式
這篇文章主要介紹了SpringBoot使用Kafka來(lái)優(yōu)化接口請(qǐng)求的并發(fā)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07SpringBoot Maven打包失敗報(bào):class lombok.javac.apt.Lombo
最新項(xiàng)目部署的時(shí)候,出現(xiàn)了一個(gè)maven打包失敗的問(wèn)題,報(bào):class lombok.javac.apt.LombokProcessor錯(cuò)誤,所以本文給大家介紹了如何解決SpringBoot Maven 打包失敗:class lombok.javac.apt.LombokProcessor 錯(cuò)誤,需要的朋友可以參考下2023-12-12Java實(shí)現(xiàn)的爬蟲(chóng)抓取圖片并保存操作示例
這篇文章主要介紹了Java實(shí)現(xiàn)的爬蟲(chóng)抓取圖片并保存操作,涉及Java針對(duì)頁(yè)面URL訪問(wèn)、獲取、字符串匹配、文件下載等相關(guān)操作技巧,需要的朋友可以參考下2018-08-08