Webアプリケーションを作成する場合、データベースのテーブルに対応するエンティティクラスを作るのが一般的である。
エンティティクラスは、データベーステーブルの各属性のsetter/getterを持つクラスである。
データベーステーブルのレコード1件分を格納するために用いる。
例えば次のようなデータベーステーブルがあったとする。
CREATE TABLE SAMPLE(
SAMPLE_ID INT AUTO_INCREMENT,
SAMPLE_STRING VARCHAR(256),
PRIMARY KEY(SAMPLE_ID)
);
このテーブルに対応するエンティティクラスは、次のようになる。
public class Sample implements Entity {
private Integer sampleId;
public Integer getSampleId() {
return sampleId;
}
public void setSampleId(Integer sampleId) {
this.sampleId = sampleId;
}
private String sampleString;
public String getSampleString() {
return sampleString;
}
public void setSampleString(String sampleString) {
this.sampleString = sampleString;
}
}
データベースの型を見ると、SAMPLE_IDがINT、SAMPLE_STRINGがVARCHARとなっている。
Javaの場合、IntegerとStringが対応するクラスとなるため、エンティティはIntegerとStringで作る。
(ただし桁数が多い場合など、個別に対応する型を考慮する必要が出てくる場合もある)
記述は必ずキャメル記法とする。(最初の1単語は全て小文字、次の単語以降は先頭1文字のみ大文字)
これはJSPでEL式を使う場合に、重要となる命名規則である。
規則通りに書いておかないと、EL式で変数を認識できなくなる。
DAOクラスでSELECTを実行する場合、取得したデータはエンティティクラスに格納する。
これによりDBから取得したデータをどこに格納するのかが明確となり、コードのメンテナンス性が上がる。
サンプルでEntityというインターフェースをimplementsしているが、これは別途記述するロウマッパーなどの仕組みを使う際に必要となる。
当該クラスがEntityであることを示すためのマーカーインタフェースが必要な場合は、空のインターフェースを作成して、エンティティクラスでimplementsの記述を行う。
0 件のコメント:
コメントを投稿