11.12. メタデータの使用


Hibernate は、すべてのエンティティと値型のリッチなメタレベルモデルを必要とします。このモデルはアプリケーション自体で役に立つこともあります。例えば、アプリケーションは、Hibernate のメタデータを使って、「スマートな」ディープコピーアルゴリズムを実装できるかもしません。そのアルゴリズムとは、どオブジェクトがコピーされるべきか(例:可変の値型)やどのオブジェクトはコピーすべきでないか(例:不変な値型や可能なら関連するエンティティ)を判断できるものです。
Hibernate は ClassMetadataCollectionMetadata インタフェースと Type 階層を通してメタデータを公開します。メタデータインターフェースのインスタンスは、 SessionFactory から得ることができます。
Cat fritz = ......;
ClassMetadata catMeta = sessionfactory.getClassMetadata(Cat.class);

Object[] propertyValues = catMeta.getPropertyValues(fritz, EntityMode.POJO);
String[] propertyNames = catMeta.getPropertyNames();
Type[] propertyTypes = catMeta.getPropertyTypes();

// get a Map of all properties which are not collections or associations
Map namedValues = new HashMap();
for ( int i=0; i<propertyNames.length; i++ ) {
    if ( !propertyTypes[i].isEntityType() && !propertyTypes[i].isCollectionType() ) {
        namedValues.put( propertyNames[i], propertyValues[i] );
    }
}
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat