1. 程式人生 > >Hibernate實體為什麼要提供一個無參的建構函式

Hibernate實體為什麼要提供一個無參的建構函式

hibernate 為什麼持久化類時必須提供一個不帶引數的預設建構函式,因為hibernate框架會呼叫這個預設構造方法來構造例項物件。

即Class類的newInstance方法  這個方法就是通過呼叫預設構造方法來建立例項物件的 ,

另外再提醒一點,如果你沒有提供任何構造方法,虛擬機器會自動提供預設構造方法(無參構造器),但是如果你提供了其他有引數的構造方法的話,虛擬機器就不再為你提供預設構造方法,這時必須手動把無參構造器寫在程式碼裡,否則new Xxxx()是會報錯的,所以預設的構造方法不是必須的,只在有多個構造方法時才是必須的,這裡“必須”指的是“必須手動寫出來”。


當查詢的時候返回的實體類是一個物件例項,是hibernate動態通過反射生成的

反射的Class.forName("className").newInstance();需要對應的類提供一個無參建構函式

必須有個無參的建構函式將物件創建出來 單從HIBERNATE的角度講 他是通過反射建立實體物件的 所以沒有預設建構函式是不行的 另外 HIBERNATE也可以通過有參的建構函式建立物件