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
}