Facade

FacadeとDAOをどう区別すればいいか、よくわかっていなかった。
Strutsの場合、ActionでDAOを使うやり方をついついやってしまうのだが、そうではなく、ActionではFacadeを使い、FacadeでDAOを使う。
このプラクティスの利点のひとつは、DAOのテストとViewのテストを並行して進められること。Hibernateを使う場合、SessionとTransactionの処理をすべてDAOに実装してしまう。そうすれば、Facadeを使ってDAOのテストができる。一方、ViewのテストにはFacadeをHibernateを使わないテスト用のFacade実装を用意しておけばいい。
したがって、Facadeはまずinterface定義から始めるべき、ということになる。