ビジネスロジックをプラットフォームから切り離す仕組み
- 例えば、開発中のシステムがWebシステムであるなら、ビジネスロジックには一切Web(J2EE)を意識させないようにする。
- ビジネスロジックが実装するフックメソッドには、抽象化されたMapやBeanを渡すのが良い。
MVCに従った仕組み
プラットフォーム以外の共通機能(認証/トランザクション管理/ロギング)をビジネスロジックから分離する仕組み
個別共通機能
和暦⇔西暦変換ユーティリティ
ロギング
排他制御
悲観的排他処理
- 一覧取得時にロックを取得
- select ~ for updateを使用可能なインタフェースを用意する
- 実質、テーブルロックになってしまうため、パフォーマンスが悪化。使い所に注意。
楽観的排他処理
- Template Methodパターンを用いて以下の○の処理をフレームワーク化する。判断ロジックのみ変更可能としておく。ロジック入れ替えにはStrategyが使用可能。
- 編集対象レコードの検索時に、検索時刻/最終更新時刻/更新IDなどを取得する
- 編集画面内で編集する
- ○更新処理時に対象レコードを再取得
- ○対象レコードが編集開始時から変更されていないことを確認、更新可能かを判断する
- ○更新可能であった場合、更新する
DAO
ページング制御
- リザルトセットの中の指定行範囲を取り出せるようにする。
- nextをまわして対処。
論理削除機能
柔軟な検索条件の指定
- SQL文後半を追加できるようにする。
- SQL文構造をクラスで表現する。