Hibernate常用注解_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > Hibernate常用注解

Hibernate常用注解

 2017/4/13 5:31:50  流星**  程序员俱乐部  我要评论(0)
  • 摘要:一、类注解1、@entity修饰一个实体类,接受一个name属性作为该实体类名称,可省略默认为该类名2、@Table指定持久化类所映射的表名,可接受以下属性catalog:可省略,用于设置将持久化类所映射的表放入指定的catalog中,若省略,则放入默认的catalog中。indexs:可省略,为持久化类设置索引,属性值为一个@index注解数组@index:用于为数据表设置索引,接受以下熟悉columnList:不可省略,设置对那些列建立索引,可指定多个数据列,指定多个列时用逗号将多个列隔开
  • 标签:常用 注解 hibernate

一、类注解

  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约束。

 二、属性注解

    1、@column指定某个属性所映射的数据列的详细信息。接受一下常用属性

属性 是否必须 说明 columnDefinition 否 值代表一个列定义的SQL字符串,指定传见该数据列的SQL语句 insertable 否 指定该列是否在默认生成的iinsert语句中,默认true length 否 指定该列最大保存的数据长度默认255 name 否 指定该列的列名默认与@Column修饰的 nullable 否 指定该列是否允许为null,默认true  precisoon  否 当该列是decimal类型时,该属性指定该列的最大有效数字位 scale  否  当该列是decimal类型时,该属性指定该列的最大的小数位数  table  否  指定该列所属的表名。用多个表保存一个实体时需要该属性。  unique  否  指定该列是否需要唯一属性,默认false  updatable  否 指定该列是否包含在hibernate所生成的update语句列表中,默认true       

    2、@Formula:该注解的value属性接受一个SQL表达式,被该注解修饰的字段会根据此SQL计算,持久化表中没有与此属性对应的列。该属性只会在读取是生效

      注意:value=“(SQL)”中的括号不可省略

         SQL中的列名与表名都应与数据库中的表名和列名对应

         在SQL中使用参数可以直接将当前类的属性传入

     3、@Generated:设置该属性映射的列的值是否又数据库生成,该注解的value可接受GenerationTime.NEVER(不有数据库生成),GenerationTime.ALWAYS(插入和更新时均生成),GenerationTime.INSERT(只在插入时更新),该属性需要底层数据库中有相应的触发器。在数据库生成后会读取这些值。

    4、@Transient:用来修饰不想持久保存的属性。

    5、@Enumerated:修饰枚举类型,该注解的value属性接受EnumType.STRING(底层保存字符串)和EnumType.ORDINAL(底层保存编号)

    6、@Lob,@Basic:修饰大数据类型属性(Clob,Blob),当属性为byte[],Byte[],java.io.Serializable类型时@Lob会在底层映射Blob列,当属性为char[],Character[],java.lang.String时@Lob会在底层映射为Clob列。

      @Basic接受下面两个属性:

        fetch:是否延迟加载,该属性接受FetchType.EAGER(立即加载)、FetchType.LAZY(延迟加载)

        optional:指定映射列是否允许使用null。

    7、@Temporal:用于修饰日期类型,该注解的value接受三个值:

        TemporalType.TIME(只取时间部分),TemporalType.DATE(只取日期部分),TemporalType.TIMESTAMP(时间戳)

发表评论
用户名: 匿名