Pessoal, diante dos meus estudos levantei alguns conceitos que estão meio obscurecidos ainda. Acredito que vocês possam me explicar.
Pergutas básicas de java web.[Resolvido]
13 Respostas
Bem grosseiramente falando:
O Hibernate (definido pelo JPA com algumas alterações) mapeia suas tabelas em objetos (objeto relacional)
O Spring e ejb fazem a inversão de controle que seria basicamente, entenda basicamente, a ligação de configurações, a criação de atributos etc diretamente no seu projeto.
vamos lá.
vc faz o mapeamento no hibernate (annotations ou xml) e seta no application-context.xml como e onde estarão essas suas classes (ou arquivos .hbm.xml).
Bem grosseiramente falando:O Hibernate (definido pelo JPA com algumas alterações) mapeia suas tabelas em objetos (objeto relacional)
O Spring e ejb fazem a inversão de controle que seria basicamente, entenda basicamente, a ligação de configurações, a criação de atributos etc diretamente no seu projeto.
vamos lá.
vc faz o mapeamento no hibernate (annotations ou xml) e seta no application-context.xml como e onde estarão essas suas classes (ou arquivos .hbm.xml).
Cara, elas estarão no servidor, agora aonde não sei…
Pessoal, me corrijam se eu estiver errado, mas aí vai:
Hibernate e Toplink são sim frameworks de persistência. Eles fazem o mapeamento objeto/relacional.
O que é muito importante para se abstrair daquelas tarefas chatas de ficar fazendo selects, updates, deletes, tudo na mão.
Nossa… parece a melhor coisa do mundo… “EU NUNCA MAIS VOU FAZER SELECT” … não se iluda, nem sempre é assim.
JPA é na verdade a especificação da SUN com relação à frameworks de persistência. E na verdade, ela utiliza a ENGINE do Hibernate.
Inclusive, quem fez a JPA foi o próprio Gavin King (desenvolvedor do Hibernate).
Cuidado com o conceito de EJB e Spring.
Eu não sei exatamente os conceitos, bonitinhos, mas posso te dizar que antes de utilizar EJB (Enterprise Java Beans) deve-se analisar se é realmente necessário. Atualmente na versão 3, EJB tornou-se bem mais simples, mas nas versões anteriores era bem mais complicado.
A maior parte do uso de EJB (pelo menos na minha visão) é em ambientes distribuídos, quando é necessário trabalhar com cluster, replicação, etc.
Spring é um ótimo framework para a camada de negócio. Faz você abstrair algumas tarefas chatas nessa camada, deixando tempo para se preocupar em realmente com as SUAS REGRAS DE NEGOCIO, e não com alternativas tecnológicas no seu código. Muito bom também.
Mas devemos ficar atentos a quantidade de XML que é necessário para a sua configuração.
O Urubatan até que tentou com o Spring Annotations, mas o pessoal de lá não deu muita atenção.
Agora promete-se suporte mais avançado a annotations na próxima versão.
Com relação à “aonde entra o hibernate e o TopLink”, acredito que esses carinhas todos têm um bom relacionamento.
Quando estamos tratando por exemplo de um aplicação WEB.
Vamos imaginar o seguinte cenário.:
JSF + Facelets para a VIEW (embora JSF seja mais do que simplesmente VIEW), então as nossa páginas serão feitas utilizando essas tecnologias.
Na camada de negócio, poderíamos ter um Spring, ou EJBs. Essa camada vai realmente conter as nossas regras de negócio.
E agora? Quem vai salvar as informações no banco de dados? Vamos fazer via JDBC?
Para isso existem esses frameworks de persistência, para nos ajudar nessa tarefa de persistir nossos objetos na base de dados.
Hoje em dia, com o uso de Hibernate ou JPA, por exemplo, aliado à Generics, Annotations e outras features que podemos falar, o uso de persistência tornou-se muito mais simples.
vale a pena dar uma pesquisada.
Espero ter ajudado em alguma coisa. Se eu estiver errado, é bom que já me corrigem.
Um abraço.
Legal a sua explicação…Mas em relação Ejb3 e os frameworks de persistencia: Quando escolho usar estas tecnologias EJB ou Spring, consequentemente já não está pré-definido o uso de JPA(hibernate, toplink…) ?
Não não. Você pode usar o que você achar melhor.
Embora por exemplo a SUN encoraje o uso de EJB + JPA, pois ela já trabalhou toda uma integração entre esses dois caras no Java 5.
Dentro dos seus EJBs, você chama o EntityManager do JPA, que já conhece as suas classes de modelo (suas entidades de negócio mapeadas via annotation com as tabelas do banco de dados). Mas você pode tranquilamente utilizar Toplink ou Hibernate com EJB.
O mesmo digo para SPRING.
Eles têm um suporte MUITO bom para Hibernate, devido a inversão de controle, o Spring encapsula a factory do hibernate, e também faz todo o controle transacional pra você. Para mais uma vez, te deixar se preocupar somente com as suas regras. Mas…
Você também pode utilizar qualquer outro framework de persistência que quiser.
Isso é o legal de você pensar no seu sistema de maneira MODULARIZADA. Assim você pode fazer um sistema com EJB, JPA e JSF.
Amanhã, se o JPA não te atende mais, você mexe somente nessa “camada”, e assim todo o resto do sistema não muda.
(embora em alguns casos necessite de pequenas mudanças)
Mais uma pergunta…Não há como utilizar JPA sem as suas implementações como hibernate, toplink ?
JPA é um “framework”.
Hibernate é outro “framework”.
Toplink é outro “framework”.
Ambos fazem a mesma coisa. Você pode usar JPA sem usar o Hibernate, ou Toplink.
Na verdade você faz uma escolha e usa.
Talvez eu tenha te confundido por dizer que JPA usa a engine do Hibernate… por isso quando você está usando JPA (ESPECIFICAÇÃO DA SUN), você está usando SEM QUERER algumas das idéias que o hibernate trouxe, e que foram incorporadas na especificação.
O que acontecia… tem muita gente que SÓ trabalha com especificação SUN, não usa frameworks de terceiros.
Então, a resistência ao Hibernate, por exemplo, era um pouco grande, devido a essa FALTA DE APOIO de alguém, caso fosse necessário um SUPORTE DE ALGUÉM… já que o Hibernate é open source.
Então, viu-se a necessidade da própria SUN criar o framework de persistência dela.
Para isso, trouxe o Gavin King para ajudá-la.
[b]FEBATATA, está bem claro estes conceitos chaves. Agora sim vou saber qual livro comprar,
qual tecnologia estudar, enfim, abriram as idéias. Muito obrigado mesmo pela paciência
e a sua boa vontade de compartilhar os seus conhecimentos.
Um abraço,
Sucesso.[/b]
JPA é um “framework”.
Hibernate é outro “framework”.
Toplink é outro “framework”.
Ambos fazem a mesma coisa. Você pode usar JPA sem usar o Hibernate, ou Toplink.
Na verdade você faz uma escolha e usa.
Talvez eu tenha te confundido por dizer que JPA usa a engine do Hibernate… por isso quando você está usando JPA (ESPECIFICAÇÃO DA SUN), você está usando SEM QUERER algumas das idéias que o hibernate trouxe, e que foram incorporadas na especificação.O que acontecia… tem muita gente que SÓ trabalha com especificação SUN, não usa frameworks de terceiros.
Então, a resistência ao Hibernate, por exemplo, era um pouco grande, devido a essa FALTA DE APOIO de alguém, caso fosse necessário um SUPORTE DE ALGUÉM… já que o Hibernate é open source.Então, viu-se a necessidade da própria SUN criar o framework de persistência dela.
Para isso, trouxe o Gavin King para ajudá-la.
Opa, pra vc usar JPA vc tem que escolher uma implementação que vai estar realmente fazendo as coisas por baixo do pano. No caso hibernate ou topink.
Opa. Estamos aí pra isso.
Estou mais LENDO que ESCREVENDO, pois todos temos muito a aprender.
Agora… se suas dúvidas foram esclarecidas, talvez seja interessante você mudar o tópico, e colocar [Resolvido] no final do nome.
Assim, o pessoal tem um feedback melhor na hora de pesquisar nas mensagens do forum.
Um abraço.
Ok…Resolvido !
JPA é um “framework”.
Hibernate é outro “framework”.
Toplink é outro “framework”.
Ambos fazem a mesma coisa. Você pode usar JPA sem usar o Hibernate, ou Toplink.
Na verdade você faz uma escolha e usa.
Talvez eu tenha te confundido por dizer que JPA usa a engine do Hibernate… por isso quando você está usando JPA (ESPECIFICAÇÃO DA SUN), você está usando SEM QUERER algumas das idéias que o hibernate trouxe, e que foram incorporadas na especificação.O que acontecia… tem muita gente que SÓ trabalha com especificação SUN, não usa frameworks de terceiros.
Então, a resistência ao Hibernate, por exemplo, era um pouco grande, devido a essa FALTA DE APOIO de alguém, caso fosse necessário um SUPORTE DE ALGUÉM… já que o Hibernate é open source.Então, viu-se a necessidade da própria SUN criar o framework de persistência dela.
Para isso, trouxe o Gavin King para ajudá-la.Opa, pra vc usar JPA vc tem que escolher uma implementação que vai estar realmente fazendo as coisas por baixo do pano. No caso hibernate ou topink.
Verdade. Falei água!
É verdade que você precisa escolher alguém por baixo dos panos.
É por isso que isso aqui é um forum… hehehe!
Como foi falado, mesmo com JPA você precisa definir qual o seu ‘provider’ de persistência(Hibernate, Toplink). Mais ou menos a idéia do JSF(que é a especificação) e você utiliza alguma implementação(MyFaces, Tomahawk, etc)
Em relação a EJB/Spring eu particularmente acho que vai mais de gosto, EJB3 trouxe bastante facilidade e praticidade pra desenvolver aplicação distribuida, coisa que no 2.1 era um parto.
E JPA não precisa ser obrigatoriamente o seu mecanismo de persistência -apesar de ser o mais comum de se utilizar, e veio para substituir os EntityBeans do EJB2.1