Hibernate常用注解

总结一些hibernate&jps一些常用并且重要的注解

仅更新/插入修改过的字段(索引字段越多使用越好,表字段少索引少更新全量更高效) @DynamicUpdate @DynamicInsert
条件判断 @Where
索引@Table(@UniqueConstraint())
更新之前的操作 @PreUpdate @PreXXX
时间@Temporal(TemporalType.TIMESTAMP)
更新,创建时间@CreationTimestamp @UpdateTimestamp
Sql公式@DiscriminatorFormula("case when type is null then 0 else forest_type end")


1
2
3
4
5
6
7
8
9
10
11
12
@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
name="planetype",
discriminatorType=DiscriminatorType.STRING
)
@DiscriminatorValue("Plane")
public class Plane {... }

@Entity
@DiscriminatorValue("A320")
public class A320extends Plane { ... }

当前类及其子类属于同一个表,用字段DTYPE区分@Inheritance(strategy = InheritanceType.SINGLE_TABLE),拥有自个的表TABLE_PER_CLASS ,不同的表、主键关联 JOINED
@DiscriminatorColumn注解定义了辨别符列。对于继承层次结构中的每个类,@DiscriminatorValue 注解指定了用来辨别该类的值。辨别符列名字默认为DTYPE,其默认值为实体名。其类型为DiscriminatorType.STRING


1
2
@FilterDef(name = "employeeFilter", parameters = { @ParamDef(name = "emplNumber", type = "integer") })
@Filters({ @Filter(name = "employeeFilter", condition = ":emplNumber <= employees_number") })

Entity中定义条件,通过session.enabledFilter("employeeFilter");打开条件并传入参数。

@FlushModeType JPA中
COMMIT:仅当提交事务时才能进行刷新 使用场合:在大量更新数据的过程中存在查询语句(除了find()和 getreference()查询)的执行。
AUTO:(默认)在执行查询时进行刷新

@Version用于支持乐观锁版本控制
@Lob –> Text
@Embeddable相关的一个集合属性用子类代替,eg:first_name,last_name

@MappedSuperclass用在父类上面。当这个类肯定是父类时,加此标注。如果改成@Entity,则继承后,多个类继承,只会生成一个表,而不是多个继承,生成多个表


有序用List 重复 有序,Set 无序 不能重复,无序用Bag–>Collection 可以重复 无序
@OrderBy("xxx ASC/DESC")一对多 List,可以使用排序,不填默认ASC

enter image description here