在るSEの開発記

SE5年生の開発記

HP&HP管理システム開発始動!

ぱぐっす

HP&HP管理システムの開発がそろそろ始まります!

web版家計簿への踏み台として、ノウハウを蓄積できたらなと。

以下はメモ・・
background: #6F7070 url(images/bg.gif) repeat-x top;
 画像は縦長でグラデーションをかける。
  w:30px 程度
  y:1024px 以上

トランザクションとデザパタ

トランザクション管理はFacadeパターンと相性がよさそう。

Facadeクラスの動き
- トランザクションを開始
- DAOを使ってDBアクセス
- 同上
- エラーが無ければコミット(トランザクションの終了を意味する)
- エラーがあればロールバック(トラry)

すこし勘違いしてた。
1コネクション = トランザクション単位と思っていたが、違うらしい。
もうちっと勉強する必要があるなぁ。

DAOの基底クラスの在るメソッド


protected final List<Map<String, Object>> executeQuery(String sql, Object[] arguments) {
ResultSet rs = null;
PreparedStatement statement = null;
List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>();
try {
statement = conn.prepareStatement(sql.toString());

int index = 1;
for (Object arg : arguments) {
statement.setObject(index++, arg);
}

LOG.debug(">>>>>>>>>>>>" + statement.toString());

rs = statement.executeQuery();
ResultSetMetaData metaData = rs.getMetaData();
while(rs.next()) {
Map<String, Object> resultMap = new LinkedHashMap<String, Object>();
for (int y = 0; y < metaData.getColumnCount(); y++) {
resultMap.put(metaData.getColumnName(y + 1), rs.getObject(y + 1));
}
resultList.add(resultMap);
}
} catch (SQLException e) {
e.printStackTrace();
// throw new DataAccessException(e.getMessage(), e);
} finally {
close(rs);
close(statement);
}
return resultList;
}


SQL文と引数を渡すと、SQLを組み立てて実行します
実行結果は、MAP<カラム名、値>をリストにつめて返却。

こうしておくと、DAOの実装クラスはコード量少なくておk

INSERT、UPDATEも少し変えるだけでいける。

ちなみに、Connectionのオープンクローズは別クラスで行います。
トランザクション管理はDAOの仕事ではないので。

DAO

前回DBを使うと明言?したので、それに関する話題を。

javaでDBや外部データ(テキストファイル等)を使用する場合、
DAO(DataAccessObject)というデザインパターンを利用するのが一般的です。

◆DAOって何さ?
  DB(Data)とビジネスロジックの間に挟む処理と捕らえてください。

◆で?役割は?
  DAOを使わない場合、ビジネスロジック自身が
  Dataの保存先を知る必要がある上、接続するための処理を記述する必要が出てきます。
  当然、ビジネスロジックは複数ありますから、すべてに同じ記述をすることになり
  メンテナンス性が失われます。
  そこで、Dataの場所や接続するための処理を記述した部品を用意するのですが
  これがDAOです。

ここが分かりやすいです

さて、無料で使えるDBは色々提供されています。
Oracle、Postgresql、H2、JavaDB(Derby)...etc
家計簿で使用するDBですが大規模なアプリではないので、軽い奴を使います。
が、まだ未定。
H2かJavaDBだなぁ。Postgresqlも軽いっちゃ軽い。Oracleは無いw
ちなみに、JavaDBは100%javaで作られた相性抜群のDBです。

DBが決まっていなくても設計と開発が進められる点もDAOの魅力です。
※ DBに依存するのはDAOだけなので、
  DAO基底クラスを用意して接続処理をまとめると言うことなし

入金管理画面できた

ほぼ完成した画面第二段です

nyuukinAA.png

上部のテキスト部分はまだ固定値だけど、
枠組みは完成!

イベント(プルダウン変更だとか登録ボタンクリックだとか)はやっぱりまだ未実装。

あと、前回DB使わないって言ったけど

やっぱり使おうかなとか・・

テキストデータの場合、差し替えが大変なんだよねぇ

2行目だけ変えたいって場合でもALLクリア ⇒ ALL書き込みになる。

DBはUPDATE一発。

なやましい。

 | HOME |  »

Recent entries

カレンダー

こうこく

楽天市場なら新作パソコンや中古パソコンが激安に

商品無料仕入れ戦隊『電脳卸』