Pessoal estou começando a ler o livro EJB 3 em ação, no capitulo 1 (pag 8-9)- ele fala do desenvolvimento em 4 camadas - que é o desenvolvimento mais comum, eu particularmente sigo este, que seria
No livro sita assim
Camada de apresentação
Camada de negocio
Camada de persistencia
Camada de banco de dados
Minha primeira dúvida, no livro é sitado as camadas acima porem ele não fala como agrupar está divisão.
Eu faço desta forma sem EJB:
Camada de apresentação
cliente.xhtml
Camada de negocio
ClienteMB(ManagendBean)
ClienteBO(seria um classe que contem gravar,editar,deletar etc e tem um clienteDAO dentro dela)
Camada de persistencia
Cliente(Entidade)
ClienteDAO
Camada de banco de dados
Oracle
Minha dúvida, managendBean fica na camada de negócio ou apresentação?
Segunda dúvida, na pagina 9 tem um paragrafo assim
"A arquitetura trandicional de quadro camadas não é perfeita. Um dos pontos mais desfavoráveis é que ela enfraquece a modelagem OO, ideal do domínio do negócio, como objeto que encapsulam tanto os dados como o comportamento.Como a arquitetura trandicional se concentra na modelagem dos processos de negócio, ao inves do domínio, a camada de negócios, tende a parecer mais como uma aplicação procedural dirigida por banco de dados do que uma OO.Como os componetes de camadas de persistencia são simples portadores de dados, eles parecem muito mais com as definiçoes de registro de banco do que com um cidadãos da primeira classe do mundo OO "
Minha dúvido, Como entender este parágrafo,
Vou escrever como eu intendo depois vocês analisam se esta certo ou erro,
Ao meu ver a arquitetura padrão de 4 camadas, deixam muito OO de lado, porque em OO é fixado a coesão e acomplamento baixo como ponto forte, ou seja uma classe deve ser objetiva e não depender da outra
Ex: Temos a entidade Cliente que tem todos os atributos ou seja o que “relamente é um cliente” está classe deveria fazer tudo que um cliente faz, como por exemplo o médoto validaCPF, na minha arquitetura de 4 camadas este metodo fica na classe ClienteBO(que contem a logica de negocio, como gravar apagar etc), e não na Cliente, isto quebra o OO certo?
Outra coisa gravar, deletar, apagar tambem não deveria ficar no Cliente ?
Obrigado