`

hibernate PO对象 注解及其应用!

 
阅读更多

@Entity

将一个 POJO 类注解成一个实体 bean ( 持久化 POJO 类 )

@Table

为实体 bean 映射指定具体的表,如果该注解没有被声明,系统将使用默认值 ( 即实体 bean 不带包名的短类名 )

@Id

将实体bean中的某个属性定义为标识符 ( identifier )

@GeneratedValue

该注解可以定义该标识符的生成策略 ( 默认是AUTO策略 ) :

AUTO— 可以是IDENTITY,或SEQUENCETABLE类型,这取决于不同的底层数据库。

TABLE— 使用表保存id值

IDENTITY— 自然递增

SEQUENCE— 序列

@Transient

被注解成 @Transient 的 getter 方法或属性,将不会被持久化,hibernate 会忽略这些字段和属性。

@Basic

所有没有定义注解的属性,等价于在其上面添加了 @Basic 注解.。通过 @Basic注解可以声明属性的获取策略 ( fetch strategy )

@Temporal

在核心的 Java API 中并没有定义时间精度 ( temporal precision )。因此处理时间类型数据时,你还需要定义将其存储在数据库中所预期的精度。

在数据库中,表示时间类型的数据有 DATE,TIME,和 TIMESTAMP 三种精度 ( 即单纯的日期,时间,或者两者兼备 )。 可使用 @Temporal 注解来调整精度。

@Column

将实体 bean 中的属性映射到表中的列。

@Column(

name= "columnName";(1)

booleanunique()defaultfalse;(2)

booleannullable()defaulttrue;(3)

booleaninsertable()defaulttrue;(4)

booleanupdatable()defaulttrue;(5)

StringcolumnDefinition()default"";(6)

Stringtable()default "";(7)

intlength()default 255;(8)

intprecision()default 0; (9)

intscale()default 0; (10)

(1)name可选,列名(默认值是属性名)

(2)unique可选是否在该列上设置唯一约束(默认值false)

(3)nullable可选是否设置该列的值可以为空(默认值true)

(4)insertable可选该列是否作为生成的insert语句中的一个列(默认值true)

(5)updatable可选该列是否作为生成的update语句中的一个列(默认值true)

(6)columnDefinition可选为这个特定列覆盖SQL DDL片段 (这可能导致无法在不同数据库间移植)

(7)table可选定义对应的表(默认为主表)

(8)length可选列长度(默认值255)

(9)precision可选列十进制精度(decimal precision)(默认值0)

(10)scale可选如果列十进制数值范围(decimal scale)可用,在此设置(默认值0)

 

例:

注 : 注解可以是在属性或 getter 方法上进行声明,但不建议混合使用这两种声明方式,相反,应该尽量避免。另外,由 static 修饰的属性不会被持久化到数据库。

 

 
package net.yeah.fancydeepin.po;

import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import java.io.Serializable;


@Entity
@Table(name = "user")
public class User implements Serializable {
        private static final long serialVersionUID = 1L;

   /**
    * ID,主键
    */
   private Integer id;

   /**
    * 用户名
    */
   private String name;

   /**
    * 昵称
    */
   private String nickName;

   /**
    * 邮箱地址
    */
   private String email;

   /**
    * 注册日期时间
    */
   private Date   registerDate;

   /**
    * 最近登录时间
    */
   private Date   recentLoginTime;
   /**
   * 上一次登录时间
    */
  private Date   lastLoginDay;

   @Id
   @GeneratedValue
   public Integer getId() {
      return id;
   }

   @Column(length = 18, nullable = false)
   public String getName() {
      return name;
   }

   @Transient
   public String getNickName() {
      return nickName;
   }

   @Column(name = "mail", length = 40, nullable = false)
   public String getEmail() {
      return email;
   }

   @Temporal(TemporalType.TIMESTAMP)
   @Column(nullable = false)
   public Date getRegisterDate() {
    return registerDate;
  }

   @Temporal(TemporalType.TIME)
   public Date getRecentLoginTime() {
      return recentLoginTime;
   }

   @Temporal(TemporalType.DATE)
   public Date getLastLoginDay() {
      return lastLoginDay;
   }

   public void setId(Integer id) {
      this.id = id;
   }

   public void setName(String name) {
      this.name = name;
   }

   public void setNickName(String nickName) {
      this.nickName = nickName;
   }

   public void setEmail(String email) {
      this.email = email;
   }

   public void setRegisterDate(Date registerDate) {
      this.registerDate = registerDate;
   }

   public void setRecentLoginTime(Date recentLoginTime) {
      this.recentLoginTime = recentLoginTime;
   }

   public void setLastLoginDay(Date lastLoginDay) {
     this.lastLoginDay = lastLoginDay;
   }

}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics