A duvida é quanto ao facade. Atualmente quando necessito gravar em banco algo que preciso verificar regra de negocio eu chamo a classe facade e ela encapsula os managers… Nela eu pesquiso metodos pelo manager e após todo o processo eu chamo novamente o manager para gravar…
Esta certo isso? Ou devo utilizar o manager fora do facade?
Ex.:
Na interface preciso gravar um obj. Ex uma partida de futebol que preciso lançar a próxima partida após gravar o resultado da ultima partida.
Pelo managed bean é acionado o gravar, o gravar lança o resultado, se tudo deu certo o próximo passo no managed bean é chamar o facade, que irá lançar a próxima partida, no facade tenho declarado o manager, ele consulta no banco, retorna o adversario, organiza tudo e chama o manager para gravar a próxima partida…
Bom, não sei se esse é o uso certo do facade, mas vou mostrar como tenho usado minhas classes ultimamente.
Exemplo de Cliente:
Entidade: Cliente (mapeada pelo hibernate, tem as lógicas pertinentes ao cliente)
Service: ClienteService (QUANDO NECESSÁRIO, quando se trabalha uma lógica do cliente que envolva operações com outras entidades. Não precisando, não crie à toa)
Repositório: ClienteRepository (interface que vai conter os métodos/operações de persistência referente ao cliente, buscaPorNome(), buscaPorIdade(), salva(), busca(), etc)
Dao: ClienteDao (contém a implementação do reposítório, e é ele que fará ‘contato’ com o BD)
Basicamente é isso, claro que quando usada em uma aplicação web, tem ainda o controller.