Como uso JSF com Hibernate no mesmo projeto?

Colegas,

Após ter estudado estes 2 Frameworks (hibernate, jsf), me encontro agora com a dúvida de como é que integro/utilizo os dois no mesmo projeto.
Engraçado que encontramos material nos diversos fóruns explicado as 2 ferramentas, mas não econtramos material que explique como usá-los ao mesmo tempo.

Tem uma forma ideal? Por favor, preciso de sugestões.

Grata,
Rebeca

Olá rebeca, bom para utilizar o jsf com hibernate é a mesma coisa que usar jsf com qualquer base de dados…

desculpe a forma como vou dizer isto, mas se tu ta com esta duvida, é por que tu não entendeu nenhum dos dois direito …

então, tenta estudar um pouquinho mais eles separados que tu vai aprender melhor e vai conseguir usar melhor eles mais adiante …

Um framework nao “encontra” com o outro dentro da sua aplicação. Enquanto voce usa o hibernate na camada Model do MVC, o JSF voce usa nas camadas View e Controler.
O que voce encontrar na net sobre Hibernate e sobre JSF provavelmente nao vai falar de integracao mesmo, pois como eu já disse, essa integracao nao existe.
Pegue o material que voce viu de JSF e Hibernate e aplique eles num projeto de teste e você verá que uma coisa nao interfere na outra…

Agradeço os comentários,

Acho que não me fiz ententer (defeito que me é inseparável), serei mais clara (ao menos, tentarei).

Após ter definido no JSF um formulário Cliente e um bean de mesmo nome de forma a prover os dados para a o formuário (visualização), a minha dúvida: é a partir deste bean que devo instanciar o objeto ClienteDAO que será a camada de persistência de dados (hibernate), de forma a preencher o referido formulário?

No referido bean eu devo colocar todos os métodos com as ações que o usuário poderá fazer (inserir, editar, excluir, consultar)?

É assim que se faz? Existe outra forma? Qual é a recomendada?

Como podem ver, são perguntas simples mas que me escapam completamente.

Sr gilliard_santos, vossa senhoria afirmou que “essa integracao nao existe”, mas se não existe um tipo de integração, como é que os dados do Hibernate podem ser carregados e visualiados pela parte de visualiação? Imagino qe alguma integração há de ter.

Sinceramente,
Rebeca

a melhor forma varia de caso pra caso …

mas o que faço normalmente é uma propriedade no mbean que ja é um VO (sem pedradas por favor) que vai ser persistido pelo Hibernate …

coloca-se no mbean metodos que irão executar as operações para as quais existirem botões na tela
em casos simples tu pode fazer a persistencia por ali mesmo, mas sempre que um metodo de um mbeam passar de 4 linhas é por que tem código demais ali, e o código deveria estarem um business object ou algo parecido …

o que eu quis dizer com “nao existe integracao” é que voce nao diz para o JSF fazer tal coisa com o hibernate e vice-versa… uma coisa nao conhece a outra, porém suas aplicacao conhece as duas e faz o meio de campo com elas…
O que normalmente ocorre é voce ter uma classe Java para tratar os eventos de uma página jsf, essa classe é chamada de ManagedBean. Esse managed bean geralmente tem um atributo que é um JavaBean/Objeto da sua aplicação, caso seja uma tela de criacao/edicao ou entao uma List se for uma tela de listagem.
A forma como o managed bean usa o hibernate pode variar. Pode instanciar o DAO, receber via Injecao de Dependencia, ou em vez de receber/instanciar o DAO, trabalhar com uma classe de serviço, ou mesmo o objeto implementar o “padrao” ActiveRecord.
Mas veja que tudo isso que eu falei, nao significa que o hibernate e o jsf se integram… foi isso que eu e as outras pessoas que responderam quiseram dizer (acredito eu).

Novamente devo agradecer as rápidas respostas dos distintos colegas.

Sr. Urubatan,

Agradeço vossa resposta.

Não entendi o que vossa senhoria quis dizer com "mas sempre que um metodo de um mbeam passar de 4 linhas é por que tem código demais ali, e o código deveria estarem um business object ou algo parecido … "

O que é exatamente “business object”? Vossa senhoria quer dizer que devo definir outra classe para fazer consistências, é isso? Quando houver muito código.
Desculpe a ignorância, é que sou pessoa simples, sendo assim, preciso de respostas igualmente simples.

Sr. gilliard_santos

Ah, bom! Também entendi isso.
Os comentários iniciais (todos eles) tendiam a colocar minha dúvida na vala comum dos que não sabem exatamente o que estão perguntando.

Obrigada.
Rebeca

Rebeca, acho que o que o urubatam quis dizer é que você nao deve implementar sua lógica de negócio no managed beam. O MB é a sua camada Control e sendo assim ela deve somente fazer ligacao da View com o seu Model, e esse ultimo sim deve implementar a lógica. Entao quando voce tem um método grande, provavelmente está implementando alguma coisa que deveria estar num objeto que implementa regras de negócio, ou BusinessObject.

Se puder, use o Spring Framework para integrar o JSF com o Hibernate (DAO). Tem uns tutoriais no site de como integrá-los.

Independente disto, acho que está faltando uma camada de negócio nesta sua arquitetura (a mesmo que seja um esquemão CRUD). Esta camada de negócio receberia os beans da sua camada de visualização (JSF), iria manipulá-los (regras de negócio) e enviaria para sua camada DAO persistir (Hibernate). Teria também o caminho de volta: DAO -> camada de negócio -> JSF.

Meus sinceros agradecimentos à todos que responderam!!

Considero este tópico encerrado.

Obrigada,
Rebeca

Quer um exemplo de utilização de JSF e Hibernate?