簡體   English   中英

調用hibernate session.get方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM