在るSEの開発記

SE5年生の開発記

阻止!

広告阻止!

仕事が落ち着いたら再開するんだからねっ!

トランザクション管理

トランザクション管理について、
あれから色々調べてみたけど、自作は断念しました。
というのも、世に出回っているフレームワークが便利すぎるため。笑

結局たどり着いたのは「Spring Framework」です。
業務でもつかったのですが、
こいつがかなり多彩な機能をもっていて、トランザクション管理機能もある。

java、Dao、トランザクションなどをキーワードにお越しいただいた方は
一度調べてみると良いかもしれません。

SQLを外だしにしたい人はiBatisも調べてみると良いかも。

HP管理システムと家計簿はiBatis&Springで決定っ。

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の仕事ではないので。

 | HOME |  »

Recent entries

カレンダー

こうこく

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

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