[RESOLVIDO] JSF - Confusão entre Beans e Classes para Banco de Dados (DAO)

14 respostas
D

Boa tarde,
Estou desenvolvendo um projeto Web no qual utilizo JSF.
Tenho dois pacotes: Model (onde tenho os beans) , e Dao(onde tenho as classes dos beans relativas ao banco de dados)
Exemplo: Model.AlunoBean (possui os atributos nome, endereco, etc…e seus respectivos getters e setters)
Dao.AlunoDao (possui os métodos insere, busca, etc…)

A minha dúvida é: Em um momento, preciso preencher os dados de um ALuno e buscá-lo no banco de dados. NEsse momento tenho um formulário que preenche os atributos de um Beam de aluno (de sessao). Entao, depois preciso testar se o banco de dados possui esse Aluno Cadastrado, utilizando esse Bean com os atributos preenchidos. Mas, para realizar isso, o unico modo que vejo é preencher o bean que contém os métodos de busca, como se meu AlunoDao possuísse tanto esses métodos como os atributos de um AlunoBean. Mas, se eu fizer isso , para que serve o AlunoBean então?? Isso nao fere a OO?

Qual a melhor solução para isso?

Perdoe-me caso seja uma pergunta idiota , é a primeira vez que trabalho com JSF.
Desde já agradeço a Atenção.

Rodrigo Maia

14 Respostas

E

bean não seria o model

o legal e simples seria vc ter

AlunoDAO (grava umAluno no Banco)

AlunoBO (model) (chama o AlunoDAO para gravar)

AlunoBean ( controle) (recebe os dados da pagina e chama o AlunoBO para gravar)

paginaAluno.jsf (passa os dados para o aluno Bean)

D

Okey, deixe-me ver se entendi.

A Classe AlunoBO então serve apenas para isolar o Bean e o Dao?
Ela deve possuir atributos? ou apenas recebê-los como parametro e repassar para o AlunoDao?

exemplo:

AlunoBean.grava() {
       
       AlunoBO.gravaDados(this);
}

AlunoBO.gravaDados(AlunoBean ab) {
        AlunoDAO.grava ( alunoBean.getNome(), etc)
}

Isso?
(e o que significa BO?? xD)

E

BO - business Object ou Objeto de negocio

Não seria apenas para isolar o bean do DAO o BO é onde fica a logica da sua aplicação.

Existe varias formas de vc fazer isso, essa é apenas uma

O alunoBean que vc fala é do jsf? se for está errado assim

Você poderia fazer o seguinte

Domino - (Aluno GET E SET)
DAO - (AlunoDAO)
BO - (ALUNOBO)
MB - (ManagendBean do JSF AlunoMB )

class AlunoMB {

private Aluno aluno;

private AlunoBO alunoBO;

// get e set

public void gravar (Aluno aluno) {
alunoBO.gravar(aluno); (que por sua vez chama o DAO para gravar)

}

}

E

Ela deve possuir atributos? ou apenas recebê-los como parametro e repassar para o AlunoDao?

depende se vc tiver que fazer alguma validação ai vc vai ter que ter atributoss…

D

Credo… AlunoBO???
Só Aluno né? Menos feio…

driguh, o Aluno (ou AlunoBO :?) é uma classe que vai conter todos os atributos do aluno e métodos para obtê-los e configurá-los (gets e sets).
AlunoDAO vai usar o Aluno passado para algum método para efetuar alguma operação na base de dados.
AlunoBean vai ser a classe que vai estar ligada ao formulário e que, por sua vez, vai usar o Aluno e o AlunoDAO para conversar com o banco, além de informar ao controlador do JSF o caminho que o fluxo da aplicação deve seguir.

[]´s

E

Pode ser Aluno ou AlunoBO não importa

O aluno que eu quis dizer ai seria o DTO só para passar os dados, como eu disse cada caso é um caso

1
vamos la… se eu tiver um Aluno com todas validaçoes , metodos , atributos, o AlunoBO não precisa ter um Aluno, pois o AlunoBO(Interface) ira atuar com um facade certo?

2
agora se eu tiver um Aluno só com atributo e get e set, O alunoBO sera a lógica de negocio aonde eu vou ter que ter uma aluno para fazer as validaçoes, não gosto dessa opção

3 É por fim eu eu posso ter o Aluno com todas validaçoes , metodos , atributos e não preciso ter um AlunoBO

Eu prefiro a 1 e a 3

D

IMHO: Eu acho esse monte de camadas uma baita de uma frescura e de perda de tempo. Parece que os desenvolvedores estão mais preocupados em ter trocentas camadas para “manter o código manutenível” e competir para ver quem tem a arquitetura mais genérica do que ter somente o que é necessário. Enfim, gosto é gosto. Eu sempre prefiro a abordagem mais simples possível, desde que essa simplicidade não implique em gambiarras. Acho que falta um pouco de bom senso para decidir as camadas que a aplicação deve realmente ter.

E

Hoje em dia, vc ter uma arquitetura robusta , para ter menas manutenção é tudo,

para o nosso amigo aconselho a opção 3

D

erickfm8:
Hoje em dia, vc ter uma arquitetura robusta , para ter menas manutenção é tudo,
para o nosso amigo aconselho a opção 3

A é? O que é ser robusto? Quanto mais camadas, mais robusta é a arquitetura? É isso?

E

Magina nunca isso hauhauuha,robusto e vc poder mudar por exemplo, de JSF para FLEX sem grandes alteraçoes, imagina se vc ter as validaçoes na view o no MB,quando mudar teque fazer tudo de novo… por isso vc ter uma camada aiii para não implicar nisto

D

Então tah… Só que não vi ainda a diferenca entre ter mais camadas do que se precisa.

R

concordo PLENAMENTE COM O @davidbuzatto

hoje em dia mta gente faz “coisa demais” pra nada, no fim vira oq apelidaram de BOLOVO

abrassss

E

Eu tbm concordo de nao ter camadas extras, somente se essa camada facilidar a flexibilidade de uma aplicação, principalmente na manutenção

D

Okey, muito obrigado pelos esclarecimentos galera.

entendi, e vou fazer conforme o recomendado pelo nosso amigo davidbuzatto.

Vlw!

Criado 5 de novembro de 2010
Ultima resposta 5 de nov. de 2010
Respostas 14
Participantes 4