2011年11月4日金曜日

[Seasar2][S2JDBC]エンティティクラスの記述

S2JDBCをO/Rマッパーとして使う場合、エンティティクラス定義上の注意点は、次の通り。

1. entityパッケージ配下にクラスを作成する。

2. エンティティクラスに@Entityアノテーションを付ける。

3. 主キーには@Idアノテーションを付ける。
    また、主キーがサロゲートキーであり、IDを自動生成する場合は@GeneratedValueアノテーションを付ける。

4. 楽観ロックのためのバージョン属性には@Versionアノテーションを付ける。

5. 外部キーで他のテーブルとリンクしている場合、外部キーの他にリンクしているテーブルクラスも定義する。
    例えば、userId(テーブルの属性名USER_IDに対応する)によってUserテーブルとリンクしているとする。
    この場合は、次のように記述する。

    public Integer userId;

    @ManyToOne
    @JoinColumn(name = "USER_ID")
    public User user;

    S2JDBCのJavaコード上でinnerJoin()と書くと、userIdをキーとしてUserテーブルの内容も格納される。

6. S2JDBC上のコードで上記5.のUserを読ませるコード例は、次の通り。

    return select().id(sampleId).innerJoin("user").getSingleResult();

    SAMPLE_IDを主キー(サロゲートキー)とするSAMPLEテーブルがあり、このテーブルが外部キーUSER_IDとした場合の例。
    このように記述すれば、Userエンティティ内の全てのデータも読み込める。

0 件のコメント:

コメントを投稿