hibernate註解

一、類級別註解

@Entity       該註解將一個類聲明爲一個實體Bean,必須有

name:可選,對應數據庫中的一個表,若表名與實體類名相同可以省略
schema:可選,對應數據庫的庫名,可省略

 


@Table        只能標註在實體class定義處,用來指定實體類和數據庫表的對應關係,通常和@Entity配合使用,可省略

name:可選,指定表的名稱;默認實體名稱和表名一致,不一致是使用該屬性指定表名
catalog:可選,指定Catalog名稱(一般寫數據庫名稱)
schema:可選,作用和catalog類似

例:

@Entity
@Table(name = "IDC_ALARM_BORD", schema = "CATH_THINKOPS")
public class AlarmBord {

}

 

 

二、屬性級別註解

@Id       定義映射到數據庫表的主鍵屬性,一個實體類只能有一個屬性被定義爲主鍵,必須有 
@GeneratedValue       定義主鍵生成策略,可省略


  strategy:定義主鍵生成策略,取值有: 
  GenerationType.AUTO(默認,根據底層數據庫自動選擇) 
  GenerationType.INDENTITY(根據數據庫的Identity字段生成,支持DB2、MySQL等) 
  GenerationType.SEQUENCE(使用Sequence來決定主鍵的取值,適合Oracle、DB2等) 
  GenerationType.TABLE(使用指定表來決定主鍵取值,結合@TableGenerator使用) 
  generator:定義主鍵生成器的名稱,如:hibernate可以指定 uuid 等主鍵生成方式

 


@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;123

@GenericGenerator         是 Hibernate 所提供的自定義主鍵生成策略生成器,對 JPA 策略的一種拓展補充

它要配合 @GeneratedValue 一起使用,並且 @GeneratedValue 註解中的 generator 屬性要與 @GenericGenerator 註解中 name 屬性一致,strategy 屬性表示 hibernate 的主鍵生成策略


  name:該值要和 @GeneratedValue 註解中 generator 屬性值一致 
  strategy:主鍵生成策略,取值有:uuid、hilo、assigned、identity、select、sequence、seqhilo、increment、foreign、guid、uuid.hex、sequence-identity 和 native

 


@Id
@GeneratedValue(generator = "paymentableGenerator")
@GenericGenerator(name = "paymentableGenerator", strategy = "increment")
private Long id;1234

@Column       將屬性映射到列,描述數據庫表中該字段的詳細信息


  name:可選,表示數據庫表中該字段的名稱,默認情形屬性名稱一致 
  nullable:可選,表示該字段是否允許爲null,默認爲true 
  unique:可選,表示該字段是否是唯一標識,默認爲false 
  length:可選,表示該字段的大小,僅對String類型的字段有效,默認值255 
  insertable:可選,表示在ORM框架執行插入操作時,該字段是否應出現INSETRT語句中,默認爲true 
  updateable:可選,表示在ORM 框架執行更新操作時,該字段是否應該出現在UPDATE 語句中,默認爲true 
  columnDefinition:可選,表示該字段在數據庫中的實際類型(VARCHAR、DATE、TEXT、BLOB)

 


@Column(name = "ALARM_ID")
private String alarmId;12

@Transient       表示該屬性並非一個到數據庫表的字段的映射

 

@Transient // 定義該屬性不映射到數據庫表中(數據庫表中沒有這個字段)
private String hostName;12

@Temporal       用於定義映射到數據庫的時間精度,只對 Date 類型數據有效


  TemporalType:時間精度,取值有:DATE(日期)、TIME(時間)、TIMESTAMP(兩者兼具)

 


@Temporal(TemporalType = DATE)
@Column
private Date createTime;123

@JoinColumn       定義該字段是關聯字段


  name:該字段的名稱,由於@JoinColumn描述的是一個關聯字段,如ManyToOne, 則默認的名稱由其關聯的實體決定

 


@OneToOne(cascade = CascadeType.ALL, optional=true)
@JoinColumn(name = "hostId") // 指向另一張表的屬性
private Long hostId;123

@OneToOne、@OneToMany、@ManyToOne、@ManyToMany       關聯映射


  cascade:設置級聯方式,取值有: 
  CascadeType.ALL(全部) 
  CascadeType.PERSIST(保存) 
  CascadeType.REMOVE(刪除) 
  CascadeType.MERGE(修改) 
  CascadeType.REFRESH(刷新) 
  fetch:配置加載方式,取值有:Fetch.EAGER(及時加載,多對一默認是Fetch.EAGER)、Fetch.LAZY(延遲加載) 
  targetEntity:配置集合屬性類型

 


@ManyToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER, optional = true)1

@Formula       作用是用一個查詢語句動態的生成一個類的屬性

 

@Formula("(select COUNT(*) from user)") // 把SQL查詢的結果賦值給該字段
private int count;12

 

三、Hibernate中Jackson相關注解

需要引入 Jackson 相關的包

 

<!-- Jackson -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.5</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.5</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.5</version>
</dependency>123456789101112131415161718

@JsonFormat       屬性級別註解,可以方便的把Date類型直接轉化爲我們想要的模式


  pattern:指定時間格式 
  timezone:指定時區


@Column
@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss", timezone = "GMT+08:00") // 指定時間的格式
private Date createTime;123

@JsonIgnoreProperties       類級別註解,作用是json序列化時將Java bean中的一些屬性忽略掉,序列化和反序列化都受影響

 

@Entity
@JsonIgnoreProperties // 序列化時將Java bean中的一些屬性忽略掉
public class Jenkins implements Serializable {
}
原文:https://blog.csdn.net/qq_35959573/article/details/80075959 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章