Hibernate中的實體類型和值類型,大家在實際應用中都有一個大致的概念,但是如何更明確的給他們下一個合適的定義呢?
我們需要從Hibernate看待各種對象出發。
對象內有用於標識用的屬性(一般都是id),該標示屬性在數據庫有其對應的主鍵,而且該對象可以被多出引用(比如當做其他對象的屬性),稱之為實體類型。
而類本身沒有用以標識的屬性,依賴於某個對象(生命周期取決於所依賴的對象),並且無法被兩個以上的對象引用的對象,則稱之為值類型。
實體類型(Entity Type)與值類型(Value Type)定義對照表
比較特性 |
實體類型(Entity Type) |
值類型(Value Type) |
對象中,是否存在用以標識該對象的屬性(如果主鍵是復合主鍵,可能是多個),而該屬性在數據庫中有其對應的主鍵。
存在,而類中對應主鍵的屬性,則用來標識對象。
沒有,因此對象本身沒有用來標識對象的屬性(但是該類可能會有專屬的Table,只是Table中的主鍵,並不會對應到對象中的任一屬性。)
能否被一個以上的對象所引用
能,被其他對象引用時,在數據庫內通過外鍵來關聯,也正因為可以被一個以上的對象所引用,因此要具備用來標識的屬性。
否。
生命周期
可獨立自主
取決於所依賴的類