GeneratedValue.java
package com.github.mygreen.sqlmapper.core.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.github.mygreen.sqlmapper.core.dialect.Dialect;
import com.github.mygreen.sqlmapper.core.id.IdGenerator;
/**
* 識別子(主キー)の値を自動生成する方法を定義します。
*
*
* @author T.TSUCHIE
*
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
@Documented
public @interface GeneratedValue {
/**
* アノテーションの付いたエンティティの識別子(主キー)を生成するために、永続化プロバイダが使用しなければならない生成戦略。
* <p>{@link #generator()}を指定している場合、この属性は無視されます。
*
* @return 識別子(主キー)の生成戦略。
*/
GenerationType strategy() default GenerationType.AUTO;
/**
* 独自に識別子を生成するための、Springコンテナ管理のBean名を指定します。
* <p>{@link IdGenerator} を実装している必要があります。
*
* @return 識別子の生成処理のSpring Beanの名称。
*/
String generator() default "";
/**
* 主キー生成戦略の種別を定義します。
*
* @author T.TSUCHIE
*
*/
enum GenerationType {
/**
* 永続化プロバイダが特定のデータベースに対して適切な戦略を選択して主キーに値を割り当てます。
* 選択される戦略は、DBダイアクレクト {@link Dialect#getDefaultGenerationType()} により決定されます。
*/
AUTO,
/**
* 永続化プロバイダはデータベースのIDENTITY列を使用してエンティティの主キーに値を割り当てます。
*/
IDENTITY,
/**
* 永続化プロバイダはデータベースのシーケンスを使用してエンティティの主キーに値を割り当てます。
*/
SEQUENCE,
/**
* 永続化プロバイダは一意性を保証するために基になるデータベースのテーブルを使用してエンティティの主キーに値を割り当てます。
*/
TABLE,
/**
* 永続化プロバイダは {@link java.util.UUID} を使用しランダムなセキュアな値を割り当てます。
*/
UUID
;
}
}