ホームページ > Java > &#&チュートリアル > Jackson が遅延フェッチされた Hibernate オブジェクトをシリアル化しないようにするにはどうすればよいですか?

Jackson が遅延フェッチされた Hibernate オブジェクトをシリアル化しないようにするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-30 06:54:16
オリジナル
421 人が閲覧しました

How to Prevent Jackson from Serializing Lazy-Fetched Hibernate Objects?

遅延フェッチされたオブジェクトに対する Jackson のシリアル化を回避する

この記事では、Jackson がフェッチされていない遅延ロードされたオブジェクトをシリアル化しないようにするという課題について説明します。 Hibernate 関連の結果

概要

提供されたシナリオでは、遅延フェッチされた座標リストを持つ User オブジェクトは、次の場合に「プロキシを初期化できませんでした - セッションがありません」例外を引き起こします。ジャクソンはオブジェクトをシリアル化しようとします。これは、Jackson がシリアル化の前に熱心に座標をフェッチし、遅延読み込みメカニズムに違反しているためです。

解決策

この解決策には、Hibernate4Module を組み込んだカスタム マッピング コンバータの統合が含まれます。このモジュールは、遅延ロード オブジェクトに対する Jackson のサポートを強化します。

Spring Java Configuration

  1. WebMvcConfigurerAdapter を拡張してオーバーライドする構成クラスを作成します。 configureMessageConverters:
@Configuration
@EnableWebMvc
public class MyConfigClass extends WebMvcConfigurerAdapter{

    public MappingJackson2HttpMessageConverter jacksonMessageConverter(){
        MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();
        ObjectMapper mapper = new ObjectMapper();
        mapper.registerModule(new Hibernate4Module());
        messageConverter.setObjectMapper(mapper);
        return messageConverter;
    }

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(jacksonMessageConverter());
        super.configureMessageConverters(converters);
    }
}
ログイン後にコピー
  1. HttpMessageConverters リストにカスタム コンバーターを登録します:
public @ResponseBody User getUser(@PathVariable String username) {
        
    User user = userService.getUser(username);
        
    return user;
        
}
ログイン後にコピー

Spring XML Configuration

  1. パーソナライズされたマッパーを作成します。リンクされたチュートリアルで説明されているように:
<bean class="com.pastelstudios.json.HibernateAwareObjectMapper">
ログイン後にコピー
  1. パーソナライズされたマッパーを使用するように MappingJackson2HttpMessageConverter を構成します:
<mvc:message-converters>
    <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="objectMapper" ref="hibernateAwareObjectMapper" />
    </bean>
</mvc:message-converters>
ログイン後にコピー

このソリューションを実装することで、Jackson は次のようになります。シリアル化中にフェッチされていない遅延オブジェクトを積極的にフェッチすることを防ぎ、例外を解決し、遅延読み込み動作を維持します。

以上がJackson が遅延フェッチされた Hibernate オブジェクトをシリアル化しないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート