Hibernate プロキシの公開: プロキシを実際のオブジェクトに変換する
Hibernate では、必要な場合にのみエンティティをロードする遅延読み込みによりパフォーマンスが向上します。ただし、プロキシ エンティティ (不完全) をリモート クライアント (GWT など) に送信する場合、それらを実際のオブジェクトに変換する必要があります。
課題: Hibernate プロキシを本格的なものに変換するにはどうすればよいですか?遅延読み込み機能を維持しながらエンティティを実現するには?
解決策: カスタム メソッドは、回答:
public static <T> T initializeAndUnproxy(T entity) { // Prevent null entities from breaking the process if (entity == null) { throw new NullPointerException("Entity passed for initialization is null"); } // Initialize the entity (lazy loading) Hibernate.initialize(entity); // If proxy, replace it with the actual implementation if (entity instanceof HibernateProxy) { entity = (T) ((HibernateProxy) entity).getHibernateLazyInitializer() .getImplementation(); } // Return the initialized and unproxied entity return entity; }
このメソッドは次のことを実行します:
このカスタム メソッドを利用すると、大部分のエンティティに対する遅延読み込みの利点を維持しながら、選択したプロキシ エンティティをオンデマンドで実際のオブジェクトに変換できます。
以上が遅延読み込みを維持しながら Hibernate プロキシを実際のオブジェクトに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。