java

【Java】頼むからDTOをしっかりと実装して欲しいお話

mokabuu

Data Transfer Object

Object思考を大切にするJavaの基本とも言えるのがこのDTOです。
DAOで拾って来た値をまとめておけるのがこのDTOです。特に大規模なアプリを作る際に活躍します。


保守が楽になる





DAOのサンプルコード

public class BandInfoDao {
	public List<BandInfoDto> getBandInfo(Connection con, String userId){
		List<BandInfoDto> bandInfo = new ArrayList<BandInfoDto>();
		/*
		 * TODO
		 * データベースに接続してselect Bandname, BandBirthDay, BandType from...
		 * とかでバンドの情報をとってきてListにaddしていく。
		 *
		 * (ex)
		 * BandInfoDto tmp = new BandInfoDto(rs.getString(1), rs.getInt(2), rs.getInt(3));
		 * bandInfo.add(tmp);
		 */
		return bandInfo;
	}
}

DTOのサンプルコード

public class BandInfoDto {
	private String bandname;
	private int bandCreateYear;
	private int bandType;

	public BandInfoDto(String bandname, int bandCreateYear, int bandType) {
		this.bandname = bandname;
		this.bandCreateYear = bandCreateYear;
		this.bandType = bandType;
	}
	public String getBandname() {
		return bandname;
	}
	public int getBandCreateYear() {
		return bandCreateYear;
	}
	public int getBandType() {
		return bandType;
	}
	@Override
	public String toString() {
		return "BandInfoDto [bandname=" + bandname + ", bandCreateYear=" + bandCreateYear + ", bandType=" + bandType + "]";
	}
}

DTOを呼び出すサンプルコード

public class service {
	private final static int BOYS = 1;
	private final static int GIRLS = 2;
	public String CheckBandType(BandInfoDto bandInfo){
		int bandType = bandInfo.getBandType();
		switch(bandType){
		case BOYS:
			return "やろばん";
		case GIRLS:
			return "ギャルバン";
		default:
			return "混声";
		}
	}
}

こうしておくことでバンド管理表に項目が増えた際には、BandInfoDtoをいじくるだけで簡単に項目を増やせますね!

後はDaoでしっかりと増えた分の値をセットするのと、セットした値を呼び出したい場所でgetをするだけです。

上記のサンプルプログラムですと、Daoにユーザー名とコネクションが渡されて、そこで読み取ったバンド情報がBandInfoDtoとして扱われます。

なのでBandInfoDtoさえあれば、BandInfoDto.getBandname()と書けば簡単にバンド名を取得できてしまうわけなのです。

たまにいるんです。

大規模なweb開発を共同で行っている際に引数を全てベタ書きにする人。

いったい何個メソッドを直させる気なんだ!
影響範囲のことは考えたのだろうか?!
保守性と言う言葉を1000回ぐらい紙に書いて欲しいものです。

同じデータベースからとって来た1連の情報であれば
DTOを作成してDTOに値を持たせて管理するようにしましょう。

以上。

DTOの無いデータベースに変更を加える開発チケットを被弾し、48時間ぐらい連続でリファクタリングに追われた私が通りました。

Xからの読者コメントをお待ちしています。
ブログ更新の励みになります!
スポンサーリンク

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT ME
mokabuu
mokabuu
ブログ管理人
2014年1月からmokabuu.comを運営しております。現在10年間で老朽化したサイトをリフォーム中です(2025/1〜)。
記事URLをコピーしました