Como você faz a ligação das camadas com DDD?

Galera li este post clássico http://www.guj.com.br/posts/list/45/60916.java que inclui DDD… outros pra evitar VO, BO etc…

Estou tentando assimilar tudo, e estou lendo o DDD do Eric…

Hoje vocês mais experientes, como implementam e NOMEIAM(visto que o Shoes disse que é fundamental um nome bem dado) as camadas da sua aplicação com DDD?

Estou com algumas dificuldades pra entender como ficaria… usando o JSF que eu conheço, como ficaria essa disposição?

view > UsuarioBean > ??? O que vem daqui pra frente, seria assim?

UsuarioService (Qual nome vocês colocam na camada responsável pelas regras de negócio onde ficaram as particularidades? UsuarioService? UsuarioBO ( :roll: ), ou invés de agrupar por um Usuario, agrupa por serviço que o usuário pertence? )

UserRepository > Impl > UserDAO > Impl ?

Não? Como seria?

[quote=JavaTux]
view > UsuarioBean > ??? O que vem daqui pra frente, seria assim?

UserRepository > Impl > UserDAO > Impl ?

Não? Como seria?[/quote]

view -> LoginMBean (ou LoginController) > AutenticationService > UserRepository > EntityManager (sem DAO)

Com certeza há colegas com mais autoridade pra falar sobre DDD aqui, mas vou falar o que eu costumo fazer.

O código que expressa seu modelo de domínio é composto por classes que implementam os padrões descritos no livro do Eric Evans, como você deve saber. Alguns desses padrões, como repositórios e fábricas, definem pontos de acesso às entidades do domínio. Quem quer que seja que acesse a camada de negócios deve acessar as entidades através das classes que implementam esses dois padrões.

Dito isso, uma decisão que deve ser tomada é se você terá disponível uma camada de aplicação ou não. Caso positivo, o managed bean não acessa repositórios ou fábricas diretamente: ele o faz através da camada de aplicação. Caso negativo, o managed bean pode acessá-los diretamente para obter e persistir as entidades.

Então, se você tiver uma camada de aplicação, o fluxo pode ficar assim:

managed bean --acessa–>
camada de aplicação --acessa–>
repositórios ou fábricas --obtém/persiste–>
entidades, aggregates, VOs

Se não tiver, o fluxo pode ficar assim:

managed bean --acessa–>
repositórios ou fábricas --obtém/persiste–>
entidades, aggregates, VOs

Abraços

Entendi agora o que você disse, li outro post e ficou claro seu post.