在默認的情況下,Entity中的屬性加載方式都是即時加載(EAGER)的,當Entity對象實例化時,就加載了實體中相應的屬性值。
但對於一些特殊的屬性,比如長文本型text、字節流型blob型的數據,在加載Entity時,這些屬性對應的數據量比較大,有時創建實體時如果也加載的話,可能嚴重造成資源的佔用。要想解決這些問題,此時就需要設置實體屬性的加載方式爲惰性加載(LAZY)。
@Basic標記可以指定實體屬性的加載方式,它的定義如下所示。
Fetch屬性表示獲取值的方式,它的值是定義的枚舉類型,枚舉類型的定義如下。
有兩種加載方式,LAZY和EAGER。LAZY 表示即時加載、EAGER表示惰性加載。默認爲即時加載
如果屬性不使用@Basic標記,屬性的加載方式爲默認的加載方式,例如不標註@Basic標記的屬性設置。
等價於:
屬性optional表示屬性是否可爲null,不能用於Java基本數據類型byte,int,short,long,boolean,char,float,double的使用。