Editionをインストールする。SpringとGenericを使って、汎用的なDAOを作成するやってみるまずは基底クラスを作成インタフェースIUserDaoを作成するIUserDaoの実装クラスを作成する。実行するこれだけでも楽になったけど。AOPで、汎用性と型安全性を備えたDAOを作るという非常に興味深い記事を発見。これは業務アプリを作るときにいつも作成するDAOを効率よく作成する方法をまとめた記事です。通常DAOの作成って、エンティティごとに似たようなコーディングをしなくてはいけなくてひじょーに煩わしいのですが、GenericsとSpringを使うことによってこの面倒な作業から解放されます。†エンティティなどはHibernate/Springを使ってトランザクション処理を記述するのものをそのまま流用します。(USERID));クラス図このクラス図で、UserDao?に当たる部分はエンティティごとに実装を書かなくてはいけないのですが、ココを楽することができるようになります。†UserDao?の既定となるクラスを作成します。persistentObject);}エンティティに対するCRUDのインタフェースを定義しました。Genericsを使ってプライマリキーとエンティティをパラメータ化しているのがポイントです。次に実装クラスをHibernateとSpringを使って実装します。}}実装クラスでも型はパラメータ化されたままになってます。type;}が定義されています。id);と記述しておくわけですね。次にUserDao?のインタフェースIUserDao?を作成します。これはココのやり方でなくても作成するいわゆるDAOのインタフェースです。{}とテンプレート化された型を指定するだけでOKとなります。ここはエンティティごとに引数や戻り値をちょこちょこ修正して作成するというインタフェースなので、ココの記述が楽になるのはすごくうれしいですね。↑IUserDao?の実装クラスを作成する。次にIUserDao?の実装を作成します。IUserDaoの実装クラスとして作成したDAOクラス。指定だけで十分なので、このクラスは必要ない。SpringのBean定義は以下のようになります。</bean></beans>このようにBLにInjectionしてあげればよいわけです。†BLは今まで通り作ればよいです。dao;}}となります。実行するメインクラスは以下の通り。PKを生成したいだけ。}}↑これだけでも楽になったけど。†これだけでも楽になったけど実はUserDao?の部分はSpringを使ってるので作成する必要はないみたいです。あとは同じ}と変更すればOKです。UserDao?/IUserDao?は必要ナシです。CRUDだけなら汎用的なDAOとSpringのBean指定だけで十分なんですね。†ここまでのサンプルで、DAOにCRUDを実装する限りはDAOの実装クラスは必要ないということ、DAOのインタフェースもそれぞれCRUDを定義しないでもGenericsを使ってパラメータ化できることが分かりました。通常DAOにはそのエンティティ固有の検索機能を実装したいですね。部分一致する検索などですね。それらはどうするのでしょうか。