2007-03-20

[Note] Hibernate Component

component要加上@Embeddable,在使用component的entity裡,可加上@Embedded或可不加,Hibernate對於沒有加上annotation的property,決定順序如下:
  1. 是不是JDK type?
  2. 那個class有沒有@Embeddable?
  3. 最後那個class有沒有Serializable?
如果不想讓property成為persistence,可以加上@Transient或transient。

component可以用@Parent作成雙向關聯。

component可以用@AttributeOverride(s)來override property settings。
component還可以用@AssociationOverride(s)來override property settings。

在儲存時,若component的所有property都是null,則再次取出來時,Hibernate會認定該component為null並回傳null component,而非所有property為null的component;當然component裡若有非nullable的property就不會發生這種情況了,像是int。

component可以有component以及x-to-one的association,但是不可以有x-to-many的collection,應該是因為component沒有pk的關係吧!

可不可以把component放到獨立的table(獨立於owning entity的table)?

先說說為什麼要這樣做?因為想要將上傳檔案作成component,並將檔案內容放到db裡,再嘗試將將component作成lazy!但目前看來不可行,所以會有效能問題,最後只好將上傳檔案做成enity,改天再講這一段。

沒有留言:

張貼留言