3.2.2. 単純なプロパティのマッピング
3.2.2.1. 基本的なプロパティマッピングの宣言 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
エンティティ Bean の静的かつ一時的でない各プロパティ (フィールドまたはメソッド) は、
@Transient としてアノテートしない限り、永続的と見なされます。プロパティにアノテーションを設定しない場合は、適切な @Basic アノテーションが使用されます。@Basic アノテーションを使用すると、プロパティのフェッチ方針を宣言できます。
counter (一時フィールド) と lengthInMeter (@Transient としてアノテートされたメソッド) は、エンティティマネージャによって無視されます。name プロパティ、length プロパティ、および firstname プロパティは永続としてマップされ、積極的にフェッチされます (単純なプロパティのデフォルト)。detailedComment プロパティ値は、エンティティのレイジープロパティが最初にアクセスされると、データベースから消極的にフェッチされます。通常は、単純なプロパティをレイジーにする必要はありません (レイジーアソシエーションフェッチと混同しないでください)。
注記
プロパティレベルのレイジーフェッチを有効にする場合は、クラスを実装する必要があります。このような機能を有効にするために、元のクラスにバイトコードが追加されます。Hibernate リファレンスドキュメンテーションを参照してください。クラスが実装されない場合は、プロパティレベルのレイジーローディングが暗黙的に無視されます。
推奨される別の方法は、EJB-QL または基準クエリの予測機能を使用することです。
EJB3 は、Hibernate によってサポートされたすべての基本タイプ (すべての基本的な Java タイプ、その対応するラッパー、およびシリアライズ可能なクラス) のプロパティマッピングをサポートします。Hibernate Annotations は、序数のカラム (Enum の序数の保存) または文字列ベースのカラム (Enum 文字列表現の保存) のいずれかに対するデフォルトの Enum タイプマッピングをサポートします。永続化表現 (デフォルトで序数に設定されます) は、
note プロパティ例で示された @Enumerated アノテーションを使用して上書きできます。
中核的な Java API で、時間の正確性は定義されません。時間データを扱う場合は、データベースで期待された正確性を定義できます。時間データは
DATE、TIME、または TIMESTAMP の正確性 (つまり、実際の日付、時間のみ、またはその両方) を持つことができます。@Temporal アノテーションを使用して微調整します。
@Lob は、プロパティタイプに応じてプロパティを Blob または Clob に永続化することを指定します。Clob では、java.sql.Clob、Character[]、char[]、および java.lang.String が永続化されます。Blob では、java.sql.Blob、Byte[]、byte[] 、およびシリアライズ可能なタイプが永続化されます。.
プロパティタイプが
java.io.Serializable を実装し、基本的なタイプでない場合や、プロパティが @Lob でアノテートされない場合は、Hibernate の serializable タイプが使用されます。