12

私の知る限りでは、動的 Java プロキシを作成するには、プロキシに対して動作するインターフェイスが必要です。それでも、Hibernate は、エンティティ クラスのインターフェイスを記述する必要なく、動的なプロキシ生成を管理しているようです。これはどのように行うのですか?Hibernate のドキュメントからの唯一の手がかりは、プロキシ生成のためにクラスが少なくともパッケージから見えるコンストラクターを持っている必要があるという事実に言及しています。

Hibernate はカスタム クラスローダーでランタイム バイトコード エンジニアリングを行っていますか? ドキュメントは、そうではないことを示唆しています。では、具体的なエンティティ オブジェクトの周りにプロキシ ラッパーを作成するにはどうすればよいでしょうか。型の安全性を気にせずに単純なインターフェイスのプロキシを作成し、それを必要に応じてキャストしますか?

4

3 に答える 3

8

Hibernate 3.3 以降、デフォルトのバイトコード プロバイダーは CGLib ではなく Javassist になりました。

Hibernate Core 移行ガイド: 3.3

于 2008-12-30T15:41:10.210 に答える
4

Hibernate は で設定されたバイトコード プロバイダを使用しますhibernate.properties。次に例を示します。

hibernate.bytecode.provider=javassist
于 2010-08-01T21:09:08.410 に答える
3

詳細については、クラスjavassist.util.proxy.ProxyFactoryを参照してください。

于 2009-09-11T07:27:39.390 に答える