我知道所有的這些術語像新的一樣,短暫的,獨立等,但有時我堅持像問題 -調用休眠session.get方法
當你調用Hibernate的Session到底發生了什麼。 get方法被調用? - hibernate將創建具有空構造函數的實例? - 會調用setter?
你能否對此表達出你的看法。
我知道所有的這些術語像新的一樣,短暫的,獨立等,但有時我堅持像問題 -調用休眠session.get方法
當你調用Hibernate的Session到底發生了什麼。 get方法被調用? - hibernate將創建具有空構造函數的實例? - 會調用setter?
你能否對此表達出你的看法。
當你調用hibernate session.get方法時調用什麼? - hibernate會用空的構造函數創建實例? - 會調用setter?
是的。在讀取數據後,Hibernate將調用no-argument constructor
來創建bean。它會調用setter方法來設置相應的值。這就是爲什麼當任何getter/setter丟失時,hibernate會給出錯誤信息。
正如評論中提到的,您可以設置調試點並查看發生的情況。
我不同意。如果一個屬性被配置爲按字段訪問,那麼如果我們沒有爲該屬性定義setter,那就沒關係。 – 2012-04-02 18:01:19
當你調用hibernate的時候實際發生了什麼session.get方法調用了 ? - hibernate將創建帶有空構造函數的實例 ?? - 會調用setter?
這取決於當前會話是否已經管理具有相同PK的實例,以及映射實體的屬性是否配置爲按屬性訪問或按字段訪問。
如果當前會話已經管理具有相同PK的實例,則將返回該實例。在這種情況下不會創建新的實例。
否則,將通過首先調用空構造函數創建一個新實例。然後將爲那些配置爲按屬性訪問的屬性調用setter。對於配置爲按字段訪問的屬性,它們的setter將不會被調用,因爲hibernate會直接將值注入這些字段。
請參閱this瞭解有關字段訪問和屬性訪問的更多信息。
您是否試圖在您的實體類中放置斷點以查看其中的一些行爲? – everton 2012-04-02 11:26:21