一、類級別註解
@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