Bem, lendo as respostas que foram dadas e me colocando em seu lugar, eu particularmente não estaria satisfeito, assim fui até o link que vc passou e li o artigo da Sun. E cheguei a conclusões e soluções interessantes que acredito serem bastante ricas e assim terei o prazer em compartilha-lha COM AQUELES QUE ASSIM QUISEREM.
Após ler todo o artigo uma consideração importante é feita na seção "Consequences"
This additional effort needs to be considered if there is sufficient justification warranting such flexibility.
Ou seja, o esforço em questão só é válido se a flexibilidade for assim exigida. Assim, em grande parte dos casos podemos ter uma arquitetura mais enxuta e que atenda aos bons padrões de projeto.
Para isto sugiro a seguinte:
[DAO_02]-----------[DAOFactory] --------- [DAO]
Ou seja um DAO genérico, responsável pelas sessões e operações comuns às entities, CRUD’s e o DAOFactory com gets para os DAOs específicos e nestes DAOs específicos você tem operações próprias de seus respectivos Entities.
Espero ter sido claro, caso contrário poste suas dúvidas e quem sabe animo fazer o Diagrama de classes tradicional ao invés deste “Class ASCII”
[]'s