Hibernate映射文件注解简介


所有的注解都是javax.persistence.*下的,而不是org.hibernate.*下。Javax.persisitence.*下的注解为JPA规范规定的注解,用于标注实体类与数据库的映射关系,而org.hibernate.*下的注解仅用于补充,当某个功能JPA暂时不支持而Hibernate支持时使用。

   @Entity  : 注解实体

   @Id  :  配置主键

   @Column :配置属性

   @OneToMany 

   @ManyToMany

   @OneToOne

   @ManyToMany


注解实体@Entity

     该注释将一个JavaBean标识成实体,有一个name属性

指定数据库表@Table

     @Table有一下4个属性:

        catalog:数据库名,默认值是hibernate在配置文件中指定的数据库。

        name:表名。默认值是实体Bean的类名。

        schema:表的所有者名。默认值是数据库的默认所有者。

        uniqueConstraints:表的约束。默认值是没有约束。

  配置主键@Id

@Id常用的属性:

   name:实体Bean的属性名。默认值是id.

   column:数据库中的主键字段名。默认是name属性的值

   type:字段类型。默认值是name属性指定的实体Bean属性的类型。

@Id   //指定该列为主键,

@GeneratedValue(strategy=GenerationType.AUTO)//主键类型auto为数据库自动增长类型


注解支持的4种主键生成策略:GenerationType.AUTOGenerationType.TABLE,GenerationType.SEQUENCE,GenerationType.IDENTITY

GenerationType.AUTO:自动方式,根据底层数据库自动选择。

GenerationType.TABLE:使用指定的表来决定主键的取值,一般结合@TableGenerator使用。

GenerationType.SEQUENCE:使用sequence取值,一般结合@SequenceGenerator使用。

@Id

@SequenceGenerator(name=seq_cat,allocationSize=25)

@GeneratedValue(strategy=GenerationTpe.SEQUENCE,generator=seq_cat)

@Column(name=id)

  

GenerationType.IDENTITY:identit类型主键。


配置普通属性

  普通属性使用@Column@Basic配置。二者都可省略。

  @Column属性:

      nullable:是否允许为null

      unique:是否唯一

      insertable:是否允许插入

      updateble:是否允许更新

      length:列长度

      columnDefinition:列类型

      scale:整数长度

      precision:小数点精度

 @Basic:可为普通属性配置加载方式,默认为及时加载。如果列数据比较大,可配置延迟加载。Optional配置该列是否可为null.如果未true,表示该属性是可选的,可以为null,否则不可以为null


配置日期属性

日期属性也是普通属性,如果日期是java.util.Date类型的,必须要用@Temporal配置日期类型,取值可以为DateTime或者Timestemp。否则Hibernate将无法区分该属性类型是java.sql.Date还是java.sql.Time类型。如果日期声明为java.sql.Time,java.sql.Date则不需要@Temporal注解。


配置临时属性

  @Transient标注的临时属性不往数据库中写入。