別掲の[hibernateの環境構築]ができている状態で、次の手順を実行する。
1. エンティティクラスのソースファイルを作成する。
@Entity(name = "SAMPLE_SERVICE_USER")
public class SampleServiceUser {
/**
* ユーザID
*/
@Id
@GeneratedValue
@Column(name = "SAMPLE_SERVICE_USER_ID")
private Integer sampleServiceUserId;
public Integer getSampleServiceUserId() {
return sampleServiceId;
}
public void setSampleServiceUserId(Integer sampleServiceUserId) {
this.sampleServiceUserId = sampleServiceUserId;
}
/**
* バージョン(楽観ロック用)
*/
@Version
@Column(name = "VERSION")
private Integer version;
public Integer getVersion() {
return version;
}
public void setVersion(Integer version) {
this.version = version;
}
/**
* メールアドレス
*/
@Column(name = "MAIL")
private String mail;
public String getMail() {
return mail;
}
public void setMail(String mail) {
this.mail = mail;
}
/**
* パスワード
*/
@Column(name = "PASSWORD")
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
/**
* ニックネーム
*/
@Column(name = "NICKNAME")
private String nickname;
public String getNickame() {
return nickame;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
}
上記はサンプル。
@Entityアノテーションにより、クラスがエンティティであることを明示する。
エンティティクラスに対応するテーブル名は、name属性で指定する。
@Idアノテーションは、主キー(hibernateの場合はサロゲートキー推奨)に付与する。
@GeneratedValueアノテーションは、IDを自動生成する場合に付与する。
@Columnアノテーションにより、データベースのカラムに対応していること明示する。
name属性には、データベース側のカラム名を記述する。
@Versionアノテーションは、hibernateのバージョン番号による楽観ロックを使う場合に付与する。
hibernateはデータベースに変更があるとversionを自動でインクリメントする。
変更前後でversionの値が違う場合は、別のユーザによる変更があったものと見なし、エラーとする。(ロールバック)
2. 次のサンプルコードを動作させ、データが取得できることを確認する。
サンプルコードを記述する前に、設定がなされていることを確認する。
hibernate.cfg.xmlにエンティティクラスを読み込む設定を記述しておく必要がある。
<mapping class="entity.SampleServiceUser" />
また、データベースに何らかのデータを登録しておく必要がある。(動作確認のため)
Javaのコードは、次の通り。
// コンフィギュレーションを作成する
Configuration config = new Configuration().configure();
// セッションファクトリーを作成する
SessionFactory sessionFactory = config.buildSessionFactory();
// セッションを取得する
Session session = sessionFactory.openSession();
// ID=1のデータを取得する
SampleServiceUser sampleServiceUser = (SampleServiceUser) session.get(
SampleServiceUser.class, 1);
SampleServiceUserが取得できていれば、hibernateが正常動作している。
0 件のコメント:
コメントを投稿