5.5. Tuplizer


org.hibernate.tuple.Tuplizer とそのサブインターフェースは、 表現の org.hibernate.EntityMode に提供されたデータの特定の表現を管理します。 提供されたデータがデータ構造として考慮される場合、 Tuplizer はこのようなデータ構造を作成する方法や、 このようなデータ構造から値を抽出したり挿入する方法を認識します。 例えば、 POJO エンティティモードでは、 対応する Tuplizer はコンストラクタより POJO を作成する方法を認識します。 また、 定義されたプロパティアクセッサを使用して POJO プロパティにアクセスする方法も認識します。
org.hibernate.tuple.entity.EntityTuplizer インターフェースと org.hibernate.tuple.component.ComponentTuplizer インターフェースによって表現される 2 つのハイレベル型の Tuplizer があります。 EntityTuplizer はエンティティに関する前述のコントラクトを管理し、 ComponentTuplizer はコンポーネントに関する前述のコントラクトを管理します。
ユーザーは独自の Tuplizer を使用することもできます。 動的マップのエンティティモードの場合、 java.util.HashMap ではなく java.util.Map の実装が必要となることがあるでしょう。または、 デフォルトで使用されるプロキシ生成戦略ではなく、 他の戦略を定義する必要な場合もあるでしょう。 カスタムの Tuplizer を定義すると、 このような状況に対処することができます。Tuplizer の定義は管理するエンティティやコンポーネントのマッピングに結び付けられます。 顧客エンティティの例をもう一度見てみましょう。
<hibernate-mapping>
    <class entity-name="Customer">
        <!--
            Override the dynamic-map entity-mode
            tuplizer for the customer entity
        -->
        <tuplizer entity-mode="dynamic-map"
                class="CustomMapTuplizerImpl"/>

        <id name="id" type="long" column="ID">
            <generator class="sequence"/>
        </id>

        <!-- other properties -->
        ...
    </class>
</hibernate-mapping>


public class CustomMapTuplizerImpl
        extends org.hibernate.tuple.entity.DynamicMapEntityTuplizer {
    // override the buildInstantiator() method to plug in our custom map...
    protected final Instantiator buildInstantiator(
            org.hibernate.mapping.PersistentClass mappingInfo) {
        return new CustomMapInstantiator( mappingInfo );
    }

    private static final class CustomMapInstantiator
            extends org.hibernate.tuple.DynamicMapInstantitor {
        // override the generateMap() method to return our custom map...
        protected final Map generateMap() {
            return new CustomMap();
        }
    }
}
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る