DESIGN

スレッドセーフなコネクションマネージャ?

いろいろな部分がひじょーに怪しいけど、この要領でいけるかも。 ちょっと試してみよう… public class ConnectioManager { private static Map pool = new HashMap(); public static Connection getConnection() throws SQLException { Thread currentThread…

setter injection

いまさらながら、setterが継承できるのがメリット/デメリットだなぁ…とか考えた。

QDox+ASM

MetaClassを使ってみて、QDoxとASMでメタ情報をclassファイルに埋め込むアプローチってよいかも、とか思った。 実行時に余計なjarが不要かもしんないし。 追記 あー、javassistでもclassファイルに書き込みできるか。

DBのメタ情報をクラスにしておくとか…

任意のカラムは指定したいけど、カラム名の直書きはしたくない…ので、データベースのメタ情報を取得して、メタ情報クラスを自動生成しておくのはどうか、と考えた。 考え方が徹底してSQL指向なのがなんだかなぁ…

メタ情報クラスを使ったクリテリアもどきを考えてみる

こんな感じか? SELECT.from(FOO, BAR).where(FOO.ID.eq(BAR.ID).and(FOO.NAME.eq(BAR.NAME)).and(FOO.VAL.eq("hoge")))fromがstaticなメソッドでClassを引数にとってStatementインターフェースを戻り値にして、whereはConditionインターフェースを引数にし…

Patternクラスを管理するクラス

ってあったほうがいいかも…とふと思った。 Pattern#compile()を連発してると、PrepareStatementの間抜けな使い方を思い出す。

DAOのインターフェース

DAOの動的な実装についてのアイデアメモ。 検索 Foo[] selectFoo(int id, String bar); List selectFoo(int id, String bar); Foo selectRowFoo(int id, String bar);以下のSQLを生成。 SELECT * FROM FOO WHERE ID = ? AND BAR = ? テーブル名は定数アノテ…

ソースファイルを動的なメタ情報に…できないかな?

メソッドの仮引数名をメタ情報として使いたいなぁ、と考えてインターフェースのclassファイルの中身を調べてみたけど、なさそうな感じ。 なので、ソースファイルそのものをメタ情報として使えないか思案中。 XDocletのようにソースを自動生成するようなのは…

DAOパターン(第3章 逆引きカタログ J2EE編)

http://www.nulab.co.jp/designPatterns/designPatterns3/designPatterns3-4.html いまさらメモ。 実際にきちんと活用されているのを見てみたいなぁ… 今までの開発だと、業務ロジック混じりまくりの肥満DAOばっかだったし。

メモ

アプリに決められたリクエストを送信して設定ファイルを再読み込み セキリティ面、要注意のこと FileWatchDogはめんどくさいことになる

拡張日付クラス

どのプロジェクトでも、大体便利に使えるので。 package exdt;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;public class ExDate extends Date { /////////////////////////////…

設定ファイルの設計アイデアメモ

native2asciiを不要にする java.util.Propertiesで出来るのかな? ってゆーか、他のクラスを使うべきかも。 Excelをそのまま設定ファイルにしてしまう 設計書=コード シンプルにするつもりがかえって冗長になったりして… コンソールからの書き換えがめんど…

Validator+OGNL

ValidatorでOGNLが使えたら便利かも…と思ったので、いい加減に実装を考えてみる。妥当性チェックのコードがこんな感じ。 public static boolean validateIf( Object bean, ValidatorAction va, Field field, ActionMessages errors, HttpServletRequest requ…

Strutsを使ったWEBアプリの設計についてのいくつかのメモ

サンプル作りました。 入出力用のJavaBeanについて その1 入力用のJavaBeanと出力用のJavaBeanは別々に作る。 出力用のJavaBeanは画面ごとに作る。 入力用のJavaBeanは業務ロジックごとに作る。 入力用のJavaBeanはインターフェースと実装に分けて作る。 画…

設定ファイルって

warから出すべきかな?

DB更新機能

更新件数、取得件数をログにはいてくれると、後々、助かるかも。

VMの向こう側

UTレベルで、リモートメソッドの呼び出しなんかやるもんじゃないな〜と、思った。当たり前かもしれないけど。 VMの向こう側が遠い…。

Generic

J2SE5.0のGenericについて「リフレクションの使用が減るかも」とちょっと思った。 でも、コレクションのサンプルしか見たことがない。C++みたいにテンプレートを定義することはできないのかな?単にコレクションの型を限定するだけだったらちょっと萎える。 …

肥満アンチパターンだっけ?

1クラスが9000行あるソースを編集していて思うこと。 クラスが多すぎるのはやだけど、でかすぎるクラスはもっといやだ。

Propertiesに日本語を使う

以下のような感じでPropertiesを拡張すれば、日本語が使えるはず。かも。 public class ExtendedProperties extends Properties { public synchronized void load(InputStream inStream) throws IOException { BufferedReader in = new BufferedReader(new I…

例外を定数にすると…

例外を定数にすると便利かも…でも、スタックトレースは大丈夫かな…と思ったので、実験。 import java.util.*;public class Hoge { private static Exception ERR_CODE = new Exception(); public static void main(String[] args) throws Exception { try { …

「戻る」ボタン

(ブラウザじゃなくてページ上の)「戻る」ボタン対策として、画面の情報はスタックに積んでセッションにおいておく。 なるべくなら、各画面の「戻る」ボタンごとに別々のアクションを用意するのはやめたい。 スタックを空にするタイミング(あるいは、スタック…

混ぜるのは簡単だけど…

うろ覚えだけど、DRY原則では「同じロジックは2度書かない」ということになっていたと思う。 でも、考えもなし似たようなロジックを共通のコードにすると、以下の問題が発生することがある。 例1) 画面表示処理とか 共通のHTMLの部品をカスタムタグにした…

MBO32110120021

とある案件のエラーコード。この手のエラーコードをマジックナンバーとしてコーディングすると、必ず間違いが出る。(桁数が足りない、1が2になってる…etc) ので、定数化するのがよい…と思う。定数にするなら MBO10222102121.log(); MBO10222102121.throwExce…

Oracleのエラーコードごとに例外を作る

Oracleのエラーコードごとに例外を作って、エラー発生時、コードに対応する例外を投げさせる。 データベースを更新するとき、事前に整合性をチェックするのはめんどいので、とりあえず更新してみて、整合性に問題があればそのとき対応しようというアプローチ…

フォームタグの各送信ボタンでリクエストパラメータを分けたい

とりあえず、思いつく限り。 HTMLの仕様を無視して、各送信ボタンをフォームタグで括る。*1 送信ボタン自体のname属性とvalue属性を利用する。 JavaScriptを使う。 2.のパターンは以下の通り。 送信ボタンのvalue属性(「送信」とか「戻る」とか)で判定。 送…

getOne()とgetRow()が欲しい

データベースアクセスクラスを作るときはgetOne()とgetRow()が欲しい…

Mapをロック

Beanのほうが安全だけど、Mapを使いたいな〜…というときのための一アイデア。 コンパイル時にはエラーをはじけないけど、動かせばすぐに分かると思う…たぶん。 import java.util.HashMap;public class LockedMap extends HashMap { private boolean lock = f…

フィールドベース?

IoCパターンだと、Setterベースにしろ、コンストラクタベースにしろ、フィールドに値をセットするメソッドと、値を保持するフィールドが必要になる。 フィールド毎にsetterを用意するのもめんどくさいなぁ…でも、publicなフィールドは危険だよなぁ…と思った…

実行時例外にしたい検査例外

WEBアプリを作っていて、実行時例外にしたいと思った検査例外は以下の二つ。 SQLException IOException それ以外の検査例外にはお目にかからなかったような気がする。とりあえず、上の二つについてラッパー例外 SQLRuntimException と IORuntimeException を…