总结一些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 |
|
当前类及其子类属于同一个表,用字段DTYPE区分@Inheritance(strategy = InheritanceType.SINGLE_TABLE),拥有自个的表TABLE_PER_CLASS ,不同的表、主键关联 JOINED@DiscriminatorColumn注解定义了辨别符列。对于继承层次结构中的每个类,@DiscriminatorValue 注解指定了用来辨别该类的值。辨别符列名字默认为DTYPE,其默认值为实体名。其类型为DiscriminatorType.STRING。
1 | (name = "employeeFilter", parameters = { (name = "emplNumber", type = "integer") }) |
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
