2011-11-07 102 views
3

對象級別的實體和值類型有什麼區別。我知道實體將有一個ID,但價值不會但爲什麼我們需要不同的方式來映射實體與值類型?休眠中的實體和值類型

這樣做是爲了讓hibernate可以對值類型應用任何優化?

回答

10

一個實體已經定義了該表的持續位置。因此,當您在實體A中擁有B實體列表時,無需爲Bs定義目標表:B已經定義它。值類型沒有任何關聯的表,因此實體A中的List<String>的映射必須定義將使用哪個表來存儲此列表。

此外,根據定義,值類型始終完全由其包含的實體擁有。一旦刪除實體,您也刪除與此實體關聯的所有字符串。實體情況並非如此:當您刪除課程實體時,您不會刪除其所有學生。

這些只是兩個示例,顯示必須定義不同的映射屬性。

0

實體類型的對象具有自己的標識,其中值類型的對象沒有數據庫標識,它屬於實體。 值類型對象通過擁有實體進行標識