JPA各種類型映射處理

1.日期格式類型字段的映射,利用@Temporal(TemporalType.Date)進行註解;例如:

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  該屬性表示爲表起別名,讓實體類與數據表名不相同;

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