ときプロジェクトが相対的に大きくなるが、また、どのようにHibernateのエンティティを設定するのhbm.xmlファイルを使用するには、より複雑になります。ここではHibernateはHibernateマッピングファイルの管理が非常に簡単になるという注釈注釈方法を提供します。
ここでは簡単にHibernateアノテーションアノテーションです
文エンティティ
@エンティティ
エンティティのコメント。どれHibernateマッピングオブジェクトは、このコメントを持つべきです
@テーブル
免責事項このオブジェクトは、エンティティテーブル(talbe)、カタログ(カタログ)とスキーマ名を指定することができ、データベース、データテーブルにマップされます。システムはデフォルト値(エンティティの短いクラス名)を使用しない場合、このコメントは、必要ありません。
@版
注釈は、エンティティBeanで楽観的ロックのサポートを追加するために使用することができます。
第二に、主キーの文
@Id
このプロパティは、主キーとして宣言されています。属性値自体が作成されますが、推奨HibernateはHibernateが生成することができます
@GeneratedValue
主キーの生成方法を指定します。私たちは、次の4つの値を持っています
表:表id値保全
IDENTITY:identitycolumn
SEQUENCR:シーケンス
AUTO:上記使用された3つの異なるデータベース
第三に、一般的なプロパティの宣言
@行
プロパティとデータベースフィールドの声明マッピング。
{4 3Returnthis.categoryName}カラム(ナム=」カテゴリ名」長= 20)2Publicvoid getCategoryName()@ 1
注意:
プロパティはPOJOマッピングが@Transitent修正を使用する必要があります持っている必要がないときに1、コメントがこの宿泊施設にはマッピングテーブルは一時的な性質ではないことを示しています。
2、@Lobアノテーションはプロパティは、属性のタイプに応じて、CLOBまたはBLOB型として永続化することを示しています。
第四に、宣言の関係
対多の関係
@OneToMany(mappedBy =」人」、カスケード= CascadeType.ALLは、フェッチ= FetchType.LAZY)
多くの宣言
@ManyToOne(カスケード= CascadeType.REFRESH)
@JoinColumn
多くの文は、文は双方向関連です
1対1の関係
@OneToOne(オプション=真、カスケード= CascadeType.ALL、mappedBy =「人」)
一つ協会声明
@OneToOne(オプション= falseを、カスケード= CascadeType.REFRESH)
@JoinColumn(名前=「PERSON_ID」、referencedColumnNameとは=「PERSONID」、ユニーク=真)
双方向関連として宣言
対多の関係
@ManyToMany(mappedBy =「学生」)
多くの関連文の多くは。
@ManyToMany(カスケード= CascadeType.PERSIST、= FetchType.LAZYフェッチ)
@JoinTable(名前=「Teacher_Student」、
joinColumns = {@JoinColumn(名=「Teacher_ID」、referencedColumnNameとは=「teacherid」)}、
inverseJoinColumns = {@JoinColumn(名=「STUDENT_ID」、referencedColumnNameと=「studentid」)})
@倉庫
春次々バージョン2.0以降では、春の開発を簡素化するために、いくつかのアノテーションを紹介します。ファーストクラスのデータアクセス層(DAO層)のためにそれを導入したの@Repositoryノートには、春の豆と識別されたグループに属します。唯一の固有のアノテーションは、DAOクラスにマークすることができます。一方、春はクラスパスのクラスをスキャンし、@Repositoryコメントを識別できるようにするために、あなたを達成することができるXML設定ファイル、自動スキャン機能豆を有効にする必要があります。
そこで、我々はもはや明示的にXMLで使用する必要はありません
ビーンは、設定を行っています。コンテナの初期化は、クラスファイルに自動的にスキャンベースパッケージとそのサブパケット内のすべてのパケットは、すべてのマーク指定春
@Repositoryクラスは春ビーンとして登録されます。
なぜ@RepositoryはDAOをマーク
その上のクラス?クラス識別ビーンとして注釈の効果だけでなく、それは同時にカプセル化春のアクセスデータの例外タイプスロークラスのデータアクセス例外をマークすることができるからです。
春自体は、異なるパッケージの永続化フレームワークスローされた例外のために、豊かなを提供し、アクセス技術特有のデータ構造データアクセスの例外とは独立して、このような根本的な異常のフレーム独立しています。
コントローラと@Component @サービス、ビーンとしてこれを識別します
3つの追加機能と同様のコメントの増加に基づいて春2.5 @Repository:コンポーネント@、サービス@、ソフトウェアシステムのさまざまなレベルのために使用されているConstroller、@:
@Componentは、任意のレベルで作用することができる、唯一の成分(豆)を表し、概念の一般化です。
@Serviceは、通常、ビジネス層に適用されますが、この機能は現在@Component同じです。
@Constrollerは、通常、制御層に適用されるが、同じ機能@Componentを提示します。
クラスを使用することにより、
@リポジトリは、コンポーネント@、サービスおよび@Constroller注釈@、春には、自動的に適切なを作成します。
BeanDefinitionオブジェクトとApplicationContextのに登録されました。これらのクラスはなりました
春はアセンブリを管理していました。@Repositoryとまったく同じ方法を使用して、異なるソフトウェア・レベルのクラスに作用に加えて、3つの音。
また、上記の4冊のノートに加えて、ユーザーがラベル@Componentのカスタム注釈やメモを作成することができ、その後、カスタムアノテーションは、同じ機能を持つ@Componentを持つことになります。しかし、この機能は一般的に使用されていません。
豆が自動的に検出された場合、スキャナに基づきます
BeanNameGenerator戦略は、そのBean名を生成します。デフォルトでは、のname属性の
@コンポーネントは、リポジトリ、@Serviceと@Controller @、豆などの値に名前を付けます
この名前。コメントは名前が含まれていないか、他の値のコンポーネントはカスタムフィルタで発見された場合は、豆のデフォルト名は小文字始まりで非修飾クラス名になります。あなたはデフォルトを使用したくない場合
豆の命名戦略は、命名戦略は、カスタムを提供することができます。まず、実現
BeanNameGeneratorインタフェースは、パラメータを指定せずにデフォルトコンストラクタを含めるようにしてください。スキャナを設定するときに、以下のように続いて、完全修飾クラス名を提供します:
そして、XML春の豆を使用して設定
豆ラベルがビーンを指定することができますしながら、同様に、ノートが特定された豆で、デフォルトの範囲は、これらの4つの音を満たすために、「シングルトン」であり、
スコープは、Spring2.5は@Scopeコメントを発表しました。次のようにちょうどライン上のコメントの使用の範囲の名前を提供します。
@Scope( "プロトタイプ")@Repository publicclassDemo {...}
あなたは、アノテーションベースの方法を使用せずに、カスタムスコープ解決戦略を提供したい場合は、単にデフォルトコンストラクタがパラメータを含んでいないことを確認するためにScopeMetadataResolverインターフェイスを実現。スキャナを設定するときに完全修飾クラス名は、提供されています。