Hibernate注解

一、什么是注解?

  解析:来源:Hibernate提供了Hibernate Annotations扩展包,它可以替换复杂的hbm.xml文件( Annotations扩展包是hibernate-annotation-3.4.0GA.zip)

     作用:使得Hibernate程序的开发大大的简化。利用注解后,可不用定义持久化类对应的*.hbm.xml,而直接以注解方式写入持久化类的实现中。

二、注解配置持久化类常用注解。

      注解                   含义和作用              
  @Entity   将 一个类声明为一个持久化类
  @Id   声明了持久化类的标识属性(相当于数据表的主键)
  @GeneratedValue   定义标识属性值的生成策略
  @Table   为持久化类映射指定表(table)、目录(catalog)和schema的名称。默认值,持久化类名,不带包名
  @UniqueConstraint   定义表的唯一约束
  @Lob   表示属性将被持久化为Blob或者Clob类型
  @Column   将属性映射到列
  @Transient   忽略这些字段和属性,不用持久化到数据库

类注解

  1、@entity修饰一个实体类,接受一个name属性作为该实体类名称,可省略默认为该类名

  2、@Table指定持久化类所映射的表名,可接受以下属性

    catalog:可省略,用于设置将持久化类所映射的表放入指定的catalog中,若省略,则放入默认的catalog中。

    indexs:可省略,为持久化类设置索引,属性值为一个@index注解数组

      @index :用于为数据表设置索引,接受以下熟悉

        columnList :不可省略,设置对那些列建立索引,可指定多个数据列,指定多个列时用逗号将多个列隔开。如:@Index(columnList = "id,name,pass"),同时为id,name,pass设置索引。

        name:索引名,可省略

        unique:可省略,设置该索引是否唯一,只能取,true 或false,默认true

    name:  该实体类所映射的表名,若省略,默认与类名一致。

    schema:将该持久化所映射的表放入schema中,若省略则放入默认schema中。

    uniqueConstraints:为持久化类所映射的表指定唯一约束,值为一个@UniqueConstraint注解数组。可省略。

      @UniqueConstraint:为数据表制定唯一约束,需指定一个columnNames属性,该属性为一个字符串数组。

  3.@Access用于改变Hibernate的属性访问策略,属性支持AccessType.PROPERTY, AccessType.FIELD,默认为AccessType.PROPERTY

      AccessType.PROPERTY:使用getter/setter方法访问属性。

      AccessType.FIELD:直接通过成员变量访问属性。 

  4.@DynamicInsert:指定用于插入时的SQL语句是否在运行是动态生成,并且只插入那些非空字段,默认false,开启将导致hibernate花费更多时间来生成SQL语句。

  5.@DynamicUpdate:指定用于更新时的SQL语句是否在运行是动态生成,并且只更新那些变过字段,默认false,开启将导致hibernate花费更多时间来生成SQL语句。

  6.@SelectBeforeUpdate:指定hibernate在更新时持久化对象时是否先进行一次查询,默认false。若查询的状态与当前状态一致则不会调用update保存状态。

  7.@Where:该注解的clause属性可指定一个附加的SQL语句过滤条件,即在采用load()或者get()和其他查询方法时,只有符合该where条件的才会被加载。该注解只会在查询时生效。

  8.@BatchSize:当hibernate抓取集合或者延迟加载时,指定每次加载size数量。

  9.@OptimisticLocking:指定乐观锁策略,该注解的type属性接受

    OptimisticLockType.VERSION:检查version/timestamp字段

    OptimisticLockType.ALL:检查全部字段

    OptimisticLockType.DIRTY:之检查修改过的字段

    OptimisticLockType.NONE:不使用乐观锁

    默认为:OptimisticLockType.VERSION

  10.@Check:通过属性constraints指定一个SQL表达式,用于给对应的表指定一个check约束。

原文地址:https://www.cnblogs.com/ztca/p/8194020.html