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 件のコメント:
コメントを投稿