Hibernate注解

Hibernate注解

@DynamicInsert属性:设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句中,默认false。

比如希望数据库插入日期或时间戳字段时,在对象字段为空定的情况下,表字段能自动填写当前的sysdate。

@DynamicUpdate属性:设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false。

@Entity 注解将一个类声明为实体 Bean, @Id 注解声明了该实体Bean的标识属性。

@Table 为实体Bean指定对应数据库表,目录和schema的名字。

​ @Table 注解包含一个schema和一个catelog 属性,使用@UniqueConstraints 可以定义表的唯一约束。

@Table(name="tbl_sky",
 uniqueConstraints = {@UniqueConstraint(columnNames={"month", "day"})}
)

@id:声明一个主键。

@Id: 注解可将实体Bean中某个属性定义为主键,使用@GenerateValue注解可以定义该标识符的生成策略。

• AUTO – 可以是 identity column, sequence 或者 table 类型,取决于不同底层的数据库
• TABLE – 使用table保存id值
• IDENTITY – identity column
• SEQUENCE – seque

AUTO 生成器,适用与可移值的应用,多个@Id可以共享同一个 identifier生成器,只要把generator属性设成相同的值就可以。通过 @SequenceGenerator@TableGenerator 可以配置不同的 identifier 生成器。

@GeneratedValue:用它来声明一个主键生成策略。默认情况是native主键生成策略。可以选择的主键生成策略有:AUTO、IDENTITY、SEQUENCE。

@Temporal:声明日期类型。

  • TemporalType.DATA:只有年月日。
  • TemporalType.TIME:只有小时分钟秒。
  • TemporalType.TIMESTAMP:有年月日小时分钟秒。

@Type:可允许你去指定Hibernate里面的一些类型。

@Version: 注解用于支持乐观锁版本控制。

@Column:注解将属性映射到列。

@Entity
public class Flight implements Serializable {
  ...
  @Column(updatable = false, name = "flight_name", nullable = false, length=50)
  public String getName() { ... }

@Lob:注解属性将被持久化为 Blog 或 Clob 类型。具体的java.sql.Clob, Character[], char[] 和 java.lang.String 将被持久化为 Clob 类型. java.sql.Blob, Byte[], byte[] 和 serializable type 将被持久化为 Blob 类型。

@Lob
public String getFullText() {
  return fullText;  // clob type
}@Lob
public byte[] getFullCode() {
 return fullCode;  // blog type
}