Springのアノテーション概要メモ
-
カテゴリ:
- Java
-
タグ:
- #Spring
最近仕事でSpringをよく使ってます。
Webの案件なのでSpring MVCで開発するんですが、コンフィグレーションでアノテーションを使っており、アノテーションの内容をちょいちょい忘れるのでここにメモしておきます。
【Spring MVC】
■エンティティ
@Entity : エンティティ・クラスであることの宣言。JPAが自動でエンティティとして認識。
@Table : ORMがテーブルと紐づける際のテーブル名を指定。
例)@Table(name = "M_USER")
@Id : 対象のフィールドがプライマリキーであること宣言。エンティティ・クラス内で必ず一つだけ作成する。
@GeneratedValue : @Idフィールドに付け、値を自動発番することを示す。
@Column : ORMが変数とテーブルのカラムを紐づけるためのカラム名を指定。
例)@Column(name = "CD", length = 10, columnDefinition = "varchar(10)")
@NotNull : NotNULL制約のカラムに対して指定する。
@JoinColumn : 外部キーとの関連を指定する。
例)@JoinColumn(name="ID", referencedColumnName="ID", nullable = false)
@ManyToOne : 多対1の関係。主キーを保持しているエンティティのカラムにつける
@OneToMany : 1対多の関係。外部キーを保持しているエンティティのカラムにつける
@OneToOne : 1対1の関係
@ManyToMany : 多対多の関係。
■リポジトリ
@Repository : 対象クラスがリポジトリのインターフェースであることを宣言。
補足:@Repositoryを付けたクラスは以下のことが必須
JpaRepositoryクラスを継承する。
継承の際は総称型を使う。(< エンティティ・クラス , プライマリキーの型 >)
■コントローラ
@Autowired : 指定したBeanのインスタンスをプロパティに自動設定する。
コントローラが呼ばれた際、@Autowiredが設定された変数やメソッドが自動で呼ばれる。
■サービス
@Transactional : 宣言したメソッドを呼び出したときにトランザクションをかける。
・トランザクション
メソッドの処理開始⇒トランザクション開始
処理が正常終了⇒コミットされる
検査例外(ExceptionとそのサブクラスでRuntimeExceptionのサブクラスじゃないもの)⇒コミットされる
非検査例外(RuntimeExceptionとそのサブクラス)⇒ロールバックされる
・トランザクションの開始条件指定
propagationをを指定することでトランザクションを開始する条件を指定できる。
例)//トランザクションが開始されていればそれを利用
@Transactional(rpropagation=Propagation.SUPPORTS)
// 常に新しいトランザクションを開始する
// トランザクションが存在する場合は中断して新しいトランザクションを開始する。
@Transactional(propagation=Propagation.REQUIRES_NEW)
// 各種設定はカンマ区切りで複数設定可能
@Transactional(readOnly = true, propagation=Propagation.SUPPORTS)
・読み込み専用
例)// 読み込み専用
@Transactional(readOnly = true)
・タイムアウト
タイムアウトが発生する秒数を指定する。
例)// 20秒でタイムアウト
@Transactional(timeout = 20)
・ロールバックの条件指定
ロールバックが発生する、または発生しない条件を指定する。
例)// 全ての例外が発生した際に、ロールバックさせる。
@Transactional(rollbackFor=Exception.class)
// 全ての例外が発生した際に、ロールバックさせない。rollbackForの逆の動き。
@Transactional(noRollbackFor=Exception.class)
// 全ての例外が発生した場合、ロールバックさせない。
@Transactional(noRollbackForClassName={"Exception"})
アノテーションの種類はまだまだいっぱいあります。
今後よく使うもので、新しいものが増えたら都度追記します。