2011年10月19日水曜日

[Servlet][JSP][Webアプリケーション]エンティティクラスについて

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

コメントを投稿