6.2. Hibernate の型


6.2.1. エンティティと値

永続サービスに関して、Java言語レベルのオブジェクトは2つのグループに 分類されます。
エンティティはエンティティへの参照を保持する、他の オブジェクトから独立して存在します。参照されないオブジェクトがガベージコレクトされてしまう性質を持つ通常の Java モデルと、これを比べてみてください。 エンティティは明示的に保存および削除する必要があります。しかし、保存と削除は 親エンティティから子へ、保存と削除がカスケードされる ことがあります。これは到達可能性によるオブジェクト永続化の ODMG モデルとは異なっています。大規模なシステムでアプリケーションオブジェクトが普通どのように使われるかにより密接に対応します。エンティティは循環と参照の共有をサポートします。またそれらはバージョン付けすることもできます。
エンティティの永続状態は他のエンティティや 型のインスタンスへの参照から構成されます。値はプリミティブ、コレクション (コレクションの内部ではなく)、コンポーネント、不変オブジェクトです。エンティティとは違い、値は(特にコレクションとコンポーネントにおいて)、到達可能性による永続化や削除が 行われます 。値オブジェクトとプリミティブは、包含するエンティティと一緒に永続化や削除が行われるので、それらを独立にバージョン付けすることはできません。値には独立したアイデンティティがないので、2つのエンティティやコレクションがこれを共有することはできません。
これまで「永続クラス」という言葉をエンティティの意味で使ってきましたが、これからもそうしていきます。しかし、永続状態を持つユーザー定義のクラスのすべてがエンティティというわけではありません。 コンポーネント は値のセマンティクスを持つユーザー定義クラスです。java.lang.String 型のプロパティもまた値のセマンティクスを持ちます。この定義を前提とすると、 JDK で提供されているすべての Java の型 (クラス) が値のセマンティクスを持つといえます。一方ユーザー定義型は、エンティティや値型のセマンティクスとともにマッピングできます。この決定はアプリケーション開発者次第です。 ドメインモデルの エンティティクラスは通常、そのクラスの1つのインスタンスへ共有参照をしていますが、 一般的に合成集約や集約は、値型へ変換されます。
このリファレンスガイドの全体で何度もこの概念を取り上げます。
Java 型のシステム、および開発者が定義したエンティティと値型を SQL /データベース型のシステムにマッピングすることは困難ですが、Hibernate は2つのシステムの架け橋を提供します。エンティティに対しては <class><subclass> などを使用します。値型に対しては通常type 属性を持つ<property><component> などを使います。この属性の値は Hibernate の マッピング型 の名前です。Hibernate には、標準 JDK の値型に対して様々なマッピングが含まれています。自身のマッピング型を記述し、同様にカスタムの変換戦略を実装することができます。
コレクションを除いて、組み込みの Hibernate の型はすべて、 null セマンティクスをサポートします。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat