private Date birthday;
@Temporal(TemporalType.DATE)
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
2.枚舉類型的映射,利用@Enumerated,其參數EnumType表示指定存放在數據表中的形式,整型還是String;
首先創建一個枚舉:
public enum Gender
{
Male,Female
}
在實體類中調用:
private Gender gender = Gender.Male; // 爲枚舉設置默認值
@Enumerated(EnumType.STRING)
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
3.大文本數據類型的映射,例如:網絡日誌,字符串類型的長度顯然不夠,利用@Lob註解,該註解用在字符串類型之上在數據庫生成LongText類型的數據;例如:
private String diary;
@Lob
public String getDiary() {
return diary;
}
public void setDiary(String diary) {
this.diary = diary;
}
4.@Lob註解用在Byte[]數組類型,例如:保存一個文件可以用此類型,用在這個上面在數據庫中可以生成LongBolb數據類型;例如:
private Byte[] file;
@Lob
public Byte[] getFile() {
return file;
}
public void setFile(Byte[] file) {
this.file = file;
}
5.如果在實體類中不需要該字段與數據庫中的表進行映射,但是默認的情況下是將實體類的全部字段映射成數據表的列,那該怎樣做呢?利用@Transient註解,例如:
private String other;
@Transient
public String getOther() {
return other;
}
public void setOther(String other) {
this.other = other;
}
6.如果一個實體類中包含一個大數據類型的字段,如Byte[]類型,當我們查詢該實體類時不得不查詢出該數據類型的字段,如果我們在查詢時只用到一個其它字段的數據,但是默認情況下是查詢全部的,那該怎樣避免查詢該大數據類型的數據呢?利用@Basic註解進行標註,將fetch屬性值設置爲Lazy即可,這樣只有在我們調用該屬性的get方法時纔會進行加載;
private Byte[] file;
@Lob @Basic(fetch=FetchType.LAZY)
public Byte[] getFile() {
return file;
}
public void setFile(Byte[] file) {
this.file = file;
}
7.@Column 該註解表示數據表的映射列,放在屬性的getter方法上:
· length 該屬性表示該映射列的長度;
· nullable 該屬性表示該列是否可爲空,true表示可爲空,false表示不可爲空;
· name 該屬性表示爲該列起別名,不讓實體類的屬性名與數據庫的列名相同;
8.@Table 該註解表示映射的表;放在該實體類之上:
· name 該屬性表示爲表起別名,讓實體類與數據表名不相同;