2010-12-06 58 views
3

有誰知道一種方法來攔截Hibernate將實例化一個.hbm.xml文件中指示的類的調用?我需要一種方法來使用自定義ClassLoader來提供一個實例。我不想一般地改變Hibernate的類加載,只是映射的「POJO」類的實例化。Hibernate映射的自定義類加載器

<hibernate-mapping> 
    <class name="com.foo.Bar" table="Bar"> 

在上面的示例代碼,當Hibernate希望實例酒吧我需要提供自定義代碼,而不是依賴於默認的類加載行爲類。

預先感謝任何見解,
saethi

+0

我正在寫一個包裝Hibernate與數據庫通信的應用程序。此應用程序需要下載包含更新的映射和POJO的.jar文件。然後,應用程序將關閉Hibernate並使用新的映射和POJO將其恢復。我正在使用額外的ClassLoader來促進動態類加載。希望能回答你的問題darioo。 – saethi 2010-12-06 19:54:09

回答

1

您可以自定義休眠方式使用自定義Tuplizer創建實體。請參閱休眠文檔,chapter 4.5

您可以擴展PojoEntityTuplizer,並通過返回Instantiator實例來覆蓋buildInstantiator(PersistentClass persistentClass)方法,該實例會根據您的喜好構建實體。

+0

這看起來很有希望;我很快會回來的結果。謝謝Flavio! – saethi 2010-12-07 16:42:59