2010-12-06 17 views
3

Hibernateが.hbm.xmlファイルに示されているクラスをインスタンス化するための呼び出しを傍受する方法を知っている人はいますか?カスタムClassLoaderを使用してインスタンスを提供する方法が必要です。私はマップされた "POJO"クラスのインスタンス化だけで、一般的にHibernateのクラスローディングを変更したくありません。上記のサンプルコードでHibernateマッピング用のカスタムクラスローダー

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

、Hibernateはバーをインスタンス化したいとき、私は、カスタムコードの代わりに、デフォルトのクラスローディング動作に依存して、そのクラスを提供する必要があります。任意の洞察力を事前に

おかげで、
saethi

+0

私はデータベースと通信するためにHibernateをラップするアプリケーションを作成しています。このアプリケーションは、更新されたマッピングとPOJOを含む.jarファイルをダウンロードする必要があります。アプリケーションはHibernateをシャットダウンし、新しいマッピングとPOJOを使ってそれを元に戻します。私は追加のClassLoaderを使用して、動的クラスの読み込みを容易にしています。うまくいけばあなたの質問dariooに答えます。 – saethi

答えて

1

あなたは、Hibernateは、カスタムTuplizerを持つエンティティを作成する方法をカスタマイズすることができます。休止状態のドキュメントchapter 4.5を参照してください。

PojoEntityTuplizerを拡張し、好きなようにエンティティを構築するInstantiatorインスタンスを返すことでbuildInstantiator(PersistentClass persistentClass)メソッドをオーバーライドできます。

+0

これは本当に有望です。すぐに結果が返ってきます。おかげさまでフラビオ! – saethi

+0

これは魅力的なように見えます。助けてくれてありがとう! – saethi

+1

この回答を使用している人には、entity-mode = "dynamic-map"を例からentity-mode = "pojo"に変更して、私が探している正確な結果を得る必要がありました。 – saethi

関連する問題