Seam Application Frameworkを使ったデータアクセスについて

名前が紛らわしいのですが、Seamの中にCRUD処理を簡易化するためのフレームワークが存在しており、Seam Application Frameworkと呼ばれています。seam-genやJBoss Toolsで自動生成したときに使われるXXListやXXHomeといったクラスが継承しているフレームワークです。
自動生成されたコードをちょっとカスタマイズして使う分にはよいのですが、これらのクラスを使って相当量のコードを作成する場合には、XXHomeなどの考え方に慣れるまで大変でした。一見XXHomeは従来からよくあるステートレスなGenericDaoパターンのようにも見えるため、これをDAO(レポジトリー)の実装であるとみなして、データアクセスはEntityManagerを直接使わず、すべてHomeクラスを経由するように最初設計していたのですが、これではうまくいかないことがわかりました。レイヤーの境界線がはっきりしないつくりとなるためわかりにくいのですが、XXHomeやXXListは結局DAOというよりは、画面コントローラーの一種として画面の制御と合わせて利用するものであるということです。だいたいこれらのクラスはステーフルで、setIdなどで一旦IDを設定してからでないと操作ができず、基本的にエンティティクラスに対して一度に編集できるインスタンスは1つとなっているため、汎用的なロジックでは面倒過ぎて使えません。これらのクラスは自動生成された画面から使われているように一覧画面や編集画面に対するコントローラーとして最適なクラスということですね。よって、業務ロジック中で複雑な関連付けの操作などDBアクセス処理を行う場合は、EntityManagerを直接呼び出すが、別途DAOクラスを作成して行うことになると思います。
また、自動生成すると全エンティティに対してXXHomeとXXListが作成されますが、もちろん、これらが必要なケースはDomain Driven Design(DDD)でいうところのAggregate Rootに限られるため、きちんと頭を使って生成されたクラスの取捨選択をしないと大変なことになります。