DESIGN
いろいろな部分がひじょーに怪しいけど、この要領でいけるかも。 ちょっと試してみよう… public class ConnectioManager { private static Map pool = new HashMap(); public static Connection getConnection() throws SQLException { Thread currentThread…
いまさらながら、setterが継承できるのがメリット/デメリットだなぁ…とか考えた。
MetaClassを使ってみて、QDoxとASMでメタ情報をclassファイルに埋め込むアプローチってよいかも、とか思った。 実行時に余計なjarが不要かもしんないし。 追記 あー、javassistでもclassファイルに書き込みできるか。
任意のカラムは指定したいけど、カラム名の直書きはしたくない…ので、データベースのメタ情報を取得して、メタ情報クラスを自動生成しておくのはどうか、と考えた。 考え方が徹底して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#compile()を連発してると、PrepareStatementの間抜けな使い方を思い出す。
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のようにソースを自動生成するようなのは…
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が使えたら便利かも…と思ったので、いい加減に実装を考えてみる。妥当性チェックのコードがこんな感じ。 public static boolean validateIf( Object bean, ValidatorAction va, Field field, ActionMessages errors, HttpServletRequest requ…
サンプル作りました。 入出力用のJavaBeanについて その1 入力用のJavaBeanと出力用のJavaBeanは別々に作る。 出力用のJavaBeanは画面ごとに作る。 入力用のJavaBeanは業務ロジックごとに作る。 入力用のJavaBeanはインターフェースと実装に分けて作る。 画…
warから出すべきかな?
更新件数、取得件数をログにはいてくれると、後々、助かるかも。
UTレベルで、リモートメソッドの呼び出しなんかやるもんじゃないな〜と、思った。当たり前かもしれないけど。 VMの向こう側が遠い…。
J2SE5.0のGenericについて「リフレクションの使用が減るかも」とちょっと思った。 でも、コレクションのサンプルしか見たことがない。C++みたいにテンプレートを定義することはできないのかな?単にコレクションの型を限定するだけだったらちょっと萎える。 …
1クラスが9000行あるソースを編集していて思うこと。 クラスが多すぎるのはやだけど、でかすぎるクラスはもっといやだ。
以下のような感じで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の部品をカスタムタグにした…
とある案件のエラーコード。この手のエラーコードをマジックナンバーとしてコーディングすると、必ず間違いが出る。(桁数が足りない、1が2になってる…etc) ので、定数化するのがよい…と思う。定数にするなら MBO10222102121.log(); MBO10222102121.throwExce…
Oracleのエラーコードごとに例外を作って、エラー発生時、コードに対応する例外を投げさせる。 データベースを更新するとき、事前に整合性をチェックするのはめんどいので、とりあえず更新してみて、整合性に問題があればそのとき対応しようというアプローチ…
とりあえず、思いつく限り。 HTMLの仕様を無視して、各送信ボタンをフォームタグで括る。*1 送信ボタン自体のname属性とvalue属性を利用する。 JavaScriptを使う。 2.のパターンは以下の通り。 送信ボタンのvalue属性(「送信」とか「戻る」とか)で判定。 送…
データベースアクセスクラスを作るときはgetOne()とgetRow()が欲しい…
Beanのほうが安全だけど、Mapを使いたいな〜…というときのための一アイデア。 コンパイル時にはエラーをはじけないけど、動かせばすぐに分かると思う…たぶん。 import java.util.HashMap;public class LockedMap extends HashMap { private boolean lock = f…
IoCパターンだと、Setterベースにしろ、コンストラクタベースにしろ、フィールドに値をセットするメソッドと、値を保持するフィールドが必要になる。 フィールド毎にsetterを用意するのもめんどくさいなぁ…でも、publicなフィールドは危険だよなぁ…と思った…
WEBアプリを作っていて、実行時例外にしたいと思った検査例外は以下の二つ。 SQLException IOException それ以外の検査例外にはお目にかからなかったような気がする。とりあえず、上の二つについてラッパー例外 SQLRuntimException と IORuntimeException を…