[英]invocation of hibernate session.get method
我知道所有這些術語,例如新的,臨時的,分離的等等。但是,有時我會遇到諸如以下問題:
當您調用休眠的session.get方法時,實際發生了什么? -休眠將使用空構造函數創建實例 -將調用二傳手嗎?
您能對此發表想法嗎?
當您調用休眠的session.get方法時,實際發生了什么? -休眠將使用空構造函數創建實例 -將調用二傳手嗎?
是。 Hibernate將在獲取數據后調用no-argument constructor
來創建Bean。 它會調用setter方法來設置相應的值。 這就是為什么缺少任何getter / setter時為什么休眠會導致錯誤的原因。
如注釋中所述,您可以設置調試點並查看這種情況。
當您調用休眠的session.get方法時,實際發生了什么? -休眠將使用空構造函數創建實例 -將調用二傳手嗎?
這取決於當前會話是否已經管理了具有相同PK的實例,以及映射實體的屬性是配置為按屬性訪問還是按字段訪問。
如果當前會話已經管理了具有相同PK的實例,則將返回該實例。 在這種情況下,將不會創建新實例。
否則,將通過首先調用空構造函數來創建新實例。 然后,將為配置為由屬性訪問的那些屬性調用設置器。 對於那些配置為可以通過字段訪問的屬性,將不會調用它們的設置器,因為hibernate會將值直接注入這些字段。
請參閱此以獲取有關字段訪問和屬性訪問的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.