2009-12-29 59 views

回答

3

值類型映射到單個數據庫列。自定義值類型通常可以表示爲單個列,但Hibernate無法識別(例如,JodaTime DateTime)。使用自定義值類型時,必須提供所有用於轉換爲列表示的邏輯。

組件更像是一個正常的hibernate映射類,除了組件的字段映射到父類的表的列。組件類型的每個字段通常都是值類型。當你有一個java類表示爲多列,但不應該放在他們自己的表中時,可以使用組件。

3

Hibernate Reference

那麼你可以使用這些類似的東西,但總的來說:

組件映射是直接映射部分列。假設你有一個名稱是一個屬於你的Hibernate實體(容器)之一的類。 Hibernate沒有識別名稱,因爲它沒有被映射,但是你可以使用組件標籤來'分解'名稱對象並將這些部分映射到實體表中。

現在,令人困惑的是您可以創建一個名爲Name的自定義值類型。但是,在這種情況下你正在做的是創建一個值,就像Hibernate識別的Int或String一樣,因爲你使用了一個特殊的接口來創建它。從Hibernate文檔中,這對於金錢價值是很有用的一個好主意。您可以創建一個值類型,告訴Hibernate如何處理您傳遞的這個貨幣對象。

您很可能會使用比自定義值類型更多的組件映射。我相信我們的應用程序,我們只使用自定義類型的Joda Time,因爲日曆糟透了。

2

組件是映射爲可重用的對象的列組。它們很容易實現。 自定義值類型實施起來有點困難。你必須實現某些hibernate接口。 在大多數情況下,我相信組件就足夠了。 我們使用自定義類型來繪製GIS值,這需要一些解析...

相關問題