プログラマのメモ帳

【開発】エンティティオブジェクトの利用【考え方】

今回は、エンティティオブジェクトを利用するということについて書いてみます。

エンティティオブジェクトとは

エンティティオブジェクトはデータの塊を表現するオブジェクト定義です。

Javaではbeanと言われたりします。言語、フレームワークなどの環境で呼ばれ方はいろいろありますが構造はほぼ同じだと思います。

データの塊とは例えばデータベースを利用した場合、テーブルのカラム構成をそのままオブジェクトにした状態となります。

テーブルでの説明

以下のようなユーザーテーブルがあった場合に、エンティティオブジェクトで表現すると。

テーブル定義

No. カラム名(論理名) 備考
1 USER_ID(ユーザー番号) NUMERIC(数値) ユーザーの管理番号
2 USER_NAME(氏名) VARCHAR(文字列) ユーザーの名称
3 STATUS(登録状況) NUMERIC(数値) 0:仮登録、1:本登録
4 UPDATE_DATE(更新日) DATETIME(日時)
5 REGIST_DATE(登録日) DATETIME(日時)

エンティティオブジェクト

No. フィールド名 備考
1 userId int ユーザーの管理番号
2 userName string ユーザーの名称
3 status int 0:仮登録、1:本登録
4 updateDate DateTime
5 registDate DateTime

 


/**
 * ユーザー情報
 */
public class User {
    /**
     * ユーザ番号
     */
    int userId;

    /**
     * ユーザ氏名
     */
    string userName;

    /**
     * 登録状況
     */
    int status;

    /**
     * 更新日時
     */
    DateTime updateDate;

    /**
     * 登録日時
     */
    DateTime registDate;
}

プログラムコードから操作する場合、オブジェクトとしてデータを扱えるとわかりやすいと個人的には思います。
このエンティティオブジェクトを配列にすることでテーブル情報をそのまま扱うことも可能となります。

WEBアプリケーションでの説明

WEBアプリケーションだと、submitを行うとformタグ内のinputタグ、selectタグなどの情報をまとめてWEBサーバーへ送信する仕組みになります。これも、エンティティオブジェクトで取得できるようにするフレームワークがあります。※フレームワークについては、フレームワーク毎のお作法がいろいろと違うため本記事では詳細は割愛させていただきます。

HTML


<html>
<head>
</head>
<body>
  <form>
    <input name="userId" type="hidden" value="2" />
    <input name="userName" type="text" value="涼風青葉" />
    <select name="status">
      <option value="0">仮登録</option>
      <option value="1">本登録</option>
    </select>
    <input type="submit" value="送信" />
  </form>
</body>
</html>

エンティティオブジェクト


/**
 * ユーザー情報
 */
public class User {
    /**
     * ユーザ番号
     */
    int userId;

    /**
     * ユーザ氏名
     */
    string userName;

    /**
     * 登録状況
     */
    int status;
}

フレームワークの仕様にもよりますが、inputタグ、selectタグの名称とエンティティオブジェクトのフィールド名が一致する定義をすることでWEB画面から送信されたデータをエンティティオブジェクトとして受け取ることを実現してくれます。
このような、データベースの情報や画面の入力データなどをプログラムで扱いやすくするオブジェクトをエンティティオブジェクトと理解してます。