Estudar Hibernate - Como e o que estudar?

Salve, salve, galera de cowboy! :man_farmer:

Sou novo em programação/java/sei la o que…
Vejo muita gente falar de hibernate pra cá, hibernate pra lá…

Primeiramente, queria saber em palavras mais simplificadas oq seria, pois pesquisando, encontro falando q eh um framework facilita o mapeamento dos atributos entre uma base tradicional de dados relacionais e o modelo objeto de uma aplicação, mediante o uso de arquivos (XML) ou anotações Java. Mas queria saber como vocês definem isso numa linguagem mais “popular”, vamos dizer assim. Queria uma ajuda sobre o que e como estudar sobre isso. Acho que seria muito interessante e oportuno acrescentar isso aos meus conhecimentos.

Quem puder dar uma força, ficarei grato! :hugs:

Amo todos vocês, seus lindos! :heart:

Bom, eu diria que o pré requisito fundamental é conhecer muito bem de SQL e ter uma boa base com orientação a objetos. Afinal, hibernate e ORMs em geral atuam no meio desses dois elementos.
Ah, sim, eu nem perderia tempo com hibernate puro. Iria direto para JPA.

O que estudar?

  • Configuração - persistence.xml e tudo o que envolve esse cara
  • Mapeamentos - anotações
  • Mapeamento de relacionamentos e chaves primárias
  • Cache de primeiro e segundo níveis
  • JPQL - JPA Query Language
1 curtida

Bom você disse que é novo em programação.Aprenda primeiro um pouco da base do java, e também java oritentado a obketos depois aprenda um pouco de sql e da jdbc depois eu te aconselho a aprender hibernate e jpa.Para assim você poder aprender e entender melhor como funciona .não de um pulo muito grande pois você não sabe o tamanho da queda

1 curtida

Hibernate é um framework para o Mapeamento Objeto-Relacional(ORM), implementa a especificação JPA(Java Persistence API).
Para aprender Hibernate é necessário como pre requisitos domínio em orientação a objetos e SQL, além de um bom conhecimento da linguagem Java. Aconcelho antes estudar sobre JPA e enterder bem sobre essa especificação.
Segue o link da oracle sobre JPA
https://www.oracle.com/technetwork/java/javaee/tech/persistence-jsp-140049.html
https://jcp.org/aboutJava/communityprocess/mrel/jsr338/index.html

Artigos sobre JPA
https://www.devmedia.com.br/introducao-a-jpa-java-persistence-api/28173


https://www.caelum.com.br/apostila-java-web/uma-introducao-pratica-ao-jpa-com-hibernate/

2 curtidas

Isso eu já tenho, creio eu. Desde o principio, comecei com a POO, SQL e JDBC. Então acho que já eh um bom momento para conhecer um pouco sobre isso.

Obrigado pelos links e seja bem-vindo ao clã do GUJ kk :heart:
Caso não tenha lido, por favor leia este tópico que irá te ajudar muito aqui no fórum:

Dando uma pesquisada nestes links, me veio uma dúvida :thinking:
Eu consigo fazer a persistencia de dados usando APENAS anotações, ou necessariamente preciso de um arquivo xml?

Anotações e:

  • xml
  • arquivo .properties
  • configuração programática
1 curtida

E usando isso tudo, eu conseguiria fazer a persistencia, sem ter classe DAO? :thinking:
Ou o Hibernate só faz a inserção, mas o SELECT´s serão ainda por uma classe DAO? :thinking:

DAO é uma abstração, um pattern que objetiva tornar transparente o processo de persistência.
Você pode, sim, remover essa parte do teu código. Pode, por exemplo, tornar as tuas entidades funcionais, tirando o aspecto anêmico de apenas fazer get e set, passando a agir como entidades que realmente executam ações.

Em outras palavras, eu consigo pela própria classe modelo, além de apenas setar as variáveis (pelos setters), já persistir no BD diretamente, sem ter que tramitá-las em outra classe. Certo?

Você deve conhecer o conceito de entidade anêmica, não? É o famoso POJO java:

  • Classe pública, atributos privados e métodos getters e setters
  • Construtor padrão

Assim sendo, você pode incluir os métodos do CRUD nessa entidade (ou numa superclasse e especializar, enfim). Embora eu tenha minhas ressalvas com esse modelo, vc pode fazer assim.

1 curtida

Você também pode fazer tudo por repositórios. Eu prefiro.

1 curtida

@FearX, como fazer para que, usando repositórios, não façamos deles DAOs disfarçados?

1 curtida

Nunca parei para pensar nisso! Acho que, no final das contas, está disfarçado mesmo. Ótimo questionamento…

Mas parando pra pensar agora, o DAO se aloca na infraestrutura enquanto o repository é regra de negócio. Repository, portanto, não pode ter conhecimento de infra, por assim dizer.

Dá pra usar lado a lado os conceitos. Então o Repository não toma papel de DAO, mas sim se comunica com ele.

Recomendo essa comparação entre DAO e Repository.

1 curtida

Justo!
Eu tenho visto cada vez mais repositories sendo DAOs… E isso me preocupa.

1 curtida

No youtube tem um canal chamado descompilando, lá tem uma série que ensina o hibernate do absoluto 0 e vai até na manipulação utilizando 2 tabelas de um para muitos, muito boa a didática, recomendo.

2 curtidas

@lemes depois vou dar uma olhada nessa playlist; já salvei ela para assistir, obrigado:hugs:

To lendo um material da oracle que me foi sugerido nesse post pelo evertoncg10, e so de ver já percebo que é muito mais prático usar Hibernate do q aqle monte de classes DAO.

Conheço sim sobre classe POJO.

Isso que achei interessante, dando uma estudada no Hibernate. Aproveita-se muito mais da classe usando HIbernate.

O hibernate deixa o código bem mais simples.
Obrigado a todos que tiraram um tempinho para me ajudar nisso! Certamente foi de grande ajuda!

1 curtida