注解释义
@Temporal(TemporalType.TIME) 表示标注该注解的字段在类中的值以time形式存储
@Enumerated(EnumType.STRING) 表示标注该注解的字段在往数据库中保存时,存到数据库中的是枚举的String表现形式
@Lob 表示标注该注解的字段,在数据库中的类型为大文本类型。如果该字段的类型是String那么生成数据库表的时候该字段的类型将生成为CLOB类型,如果该字段的类型为byte[]
类型,那么生成数据库表的时候对应的列将生成为BLOB类型。
@Transient 表示标注该注解的字段,不作为数据持久化字段。
@Basic(fetch=FetchType.LAZY) 表示标注该注解的字段延迟加载。在没有调用该字段get()方法获得它的值时,系统是不会把该值加载到内存中的。这样可以节省内存的占用。需要注意的是,当调用该字段的get()方法时,Entitymanager对象必须是非关闭状态,否则将报异常。
@Target(ElementType.METHOD) 表示被标注该注解的注解可以标注在方法上。
@Retention(RetentionPolicy.RUNTIME) 表示标注该注解的注解在运行时可以拿到,如果参数是RetentionPolicy.SOURCE那么表示只能在源代码时拿到。 也就是标注该注解的生命周期。
@Inheritance(strategy=InheritanceType.JOINED) 标注该注解的父类,在生成表的时候他会根据父类字段生成一张表,然后每一个子类根据各自的字段各生成一张表,并且表中有对父类主键的外键引用。 如果参数strategy的值为InheritanceType.TABLE_PER_CLASS,那么在生成表的时候他会根据父类的字段生成一张表,然后每一个子类会根据自己的字段以及从父类继承而来的字段,各生成一张表。如果参数strategy的值为InheritanceType.SINGLE_TABLE,那么在生成表的时候他会根据父类的字段和所有子类的字段一块生成一张表(仅生成一张表)。而且会根据@DiscriminatorColumn(name="type")注解生成一个区分各个子类的一个字段,参数InheritanceType.JOINED和InheritanceType.TABLE_PER_CLASS在生成表的时候则不会根据该注解生成一个区分各个子类的一个字段。