在默认的情况下,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的使用。