Java言語を使って開発をしていると@Overrideなどのアノテーションを頻繁に見かけるかと思います。
アノテーションとは注釈の意味であり、あるデータに対して関連する情報を注釈として付ける事であり、プログラムの中では記述されたコードに注意書きを追加する機能となります。
Java言語においてこのアノテーションは大きく3つに分類することができます。
マーカーアノテーション | 特にデータを持たず、コードに記述された注釈の意味を表すもの |
単一値アノテーション | データを1つ持つアノテーション、メソッドの呼び出しのような形で付随された機能を扱う |
フルアノテーション | 単一値アノテーションに対してデータを複数持つアノテーション |
上記で例示した@Overrideアノテーションはマーカーアノテーションに類するものになります。
では、今回の表題にあるJavaのフレームワークのSpring FrameworkとHibernateにおけるアノテーションをいくつか紹介します。
@Controller
まずはMVCアーキテクチャのC、コントローラ内で使用されるものになります。これはそのままの名前なので覚えやすいですね。これをクラス名の先頭に付けるだけで、SpringFrameworkはこのクラスをコントローラクラスと認識してくれるようになります。
@RequestMapping()
こちらもコントローラ内で見かけるアノテーションです。メソッドの先頭に付ける事によってURIのプロジェクト名以降に付けられるパスや、呼び出されるリクエストメソッドがGET送信かPOST送信で呼び出されるかを引数に入力し、宣言することができます。
ex. @RequestMapping(value = “/”, method = RequestMethod.GET)
@Entity
データのまとまりの単位の名称であるエンティティは、データベースからの抽出データなどをまとめるもので、クラス名の先頭に付けられるものです。@Table()アノテーションと併せて使用し、@Tableアノテーションの引数に関連させたいテーブル名を入れていくことで。データベースからの情報を受け取ります。
@Id
データベースに関連して@Idアノテーションです。こちらはエンティティクラスのフィールドに付けられ、このフィールドに格納されるデータが「主キー」で設定されているものを示しています。
こちらも併せて関連する列名を示す@Column()、自動採番を示す@GeneratedValues()などがあります。
今回はほんの一例ですが、まだまだSpringで使用できるアノテーションはあります。
例外処理のハンドラに付ける@ExceptionHandlerやValidationアノテーションで用意されている、フィールドの入力値をチェックする@Null、@NotNullや@Min、@Maxなど。
他にもSpringと併せて使用するO/Rマッピング(Object/Relational Mapping データベースとオブジェクト指向プログラムの関連付けをすること)のライブラリであるHibernateで使用される@NotEmptyや@Length。
JUnitのテストメソッドに付けられる@Testなどなど。
興味がある方は是非色々と調べてみてください。