HP&HP管理システム開発始動!
ぱぐっす
HP&HP管理システムの開発がそろそろ始まります!
web版家計簿への踏み台として、ノウハウを蓄積できたらなと。
以下はメモ・・
background: #6F7070 url(images/bg.gif) repeat-x top;
画像は縦長でグラデーションをかける。
w:30px 程度
y:1024px 以上
HP&HP管理システムの開発がそろそろ始まります!
web版家計簿への踏み台として、ノウハウを蓄積できたらなと。
以下はメモ・・
background: #6F7070 url(images/bg.gif) repeat-x top;
画像は縦長でグラデーションをかける。
w:30px 程度
y:1024px 以上
トランザクションとデザパタ
トランザクション管理はFacadeパターンと相性がよさそう。
Facadeクラスの動き
- トランザクションを開始
- DAOを使ってDBアクセス
- 同上
- エラーが無ければコミット(トランザクションの終了を意味する)
- エラーがあればロールバック(トラry)
すこし勘違いしてた。
1コネクション = トランザクション単位と思っていたが、違うらしい。
もうちっと勉強する必要があるなぁ。
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基底クラスを用意して接続処理をまとめると言うことなし
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基底クラスを用意して接続処理をまとめると言うことなし




Facade
てなんですか?くぉ入金管理画面できたくぅぅっ・・・時間ができて改めて思うけど、
途中で投げてしまったのが悔しいぜ。。。
企画・案出し頑張るぜ。
画面とか中身でも、出来ることあれば言ってチョ。
出来る時はやりたくぉ入金管理画面できたペットが降臨したw
おっけー
今後は企画とか案出しを頼もう ・・)bぱぐ入金管理画面できた家計簿俺には
無理だっ
頼むっぺぐIPアドレス取る方法ゆっくりー・・・ふむふむ…
明日、使ってみるべさっ
はぁぁぁぁぁぁー
ゆっくり休みたいよぉぉー><。くぉーめっちゃ途中ですがひハ−イ先生っ!
わかりましたぁぁぁぁ!
でも、良い眠気覚ましになるから、
時間を見つけてちょいちょい勉強がてらに作りたいなぁ〜(´w`レモリアン