Os profissionais deTI que trabalham com a orientação a objetos através do Java geralmente optam pelo JPA ou Hibernate ao implementar a persistência em suas aplicações. Neste artigo, daremos vez ao Hibernate, solução que simplifica e facilita o armazenamento e a recuperação de informações e que, assim como a JPA, adota o Mapeamento Objeto-Relacional (Object/Relational Mapping – ORM), uma técnica que abstrai as diferenças entre o modelo relacional e o modelo OO.
As principais vantagens do ORM são viabilizar a persistência dos dados, permitir que a aplicação permaneça totalmente orientada a objetos e possibilitar que possíveis mudanças na base de dados impliquem em um menor impacto sobre a aplicação, tendo em vista que apenas os objetos relacionados com as tabelas alteradas precisarão de mudanças.
Um dos principais recursos que o Hibernate oferece é a opção de criar mapeamentos entre modelos de objetos e modelos relacionais através de anotações. A partir desse mecanismo podemos especificar, no código, as mais diversas associações existentes dentro de um banco de dados.
Dentre as vantagens, o uso de anotações nos permite um código mais intuitivo do que os arquivos baseados em XML e ainda supre algumas das suas limitações, tais como: facilidade de visualização das configurações, checagem do código da aplicação em tempo de compilação e possibilidade de refactoring.
Antes de iniciar a codificação, no entanto, é comum a desenvolvedores realizar a modelagem do banco de dados. Nesse momento, muitos consideram como etapa mais complexa a necessidade de utilizar relacionamentos dos tipos “1:N” (um-para-muitos) e “N:N” (muitos-para-muitos). Essas opções, bastante presentes no mundo real, normalmente são um pouco mais difíceis de especificar porque envolvem um número maior de variáveis a serem consideradas, como a necessidade de definir mais uma tabela, o modo como os dados devem ser carregados do banco, entre outras.
Com base nisso, começaremos este artigo abordando as características dos relacionamentos um-para-muitos e muitos-para-muitos. Em seguida, veremos como modelar um sistema de cadastro considerando cada uma das associações mencionadas. Para tanto, serão empregados, além da linguagem Java, o ambiente de desenvolvimento Eclipse integrado ao Maven e o sistema de gerenciamento de banco de dados MySQL. O Hibernate será usado como solução para abstrair a camada de persistência, viabilizando a interface entre a aplicação e o MySQL.
Associações um-para-muitos
O relacionamento de cardinalidade um-para-muitos (ou muitos-para-um), representado pela notação 1:N (lê-se um para N), é usado quando uma entidade A pode se relacionar com uma ou mais entidades B e B pode estar relacionado a apenas uma entidade A. Vejamos um exemplo: um time de futebol pode ter vários jogadores, mas um jogador só pode estar relacionado a um time. A Figura 1 demonstra mais um exemplo desse tipo de relacionamento. Neste caso, um Setor pode ter vários Empregados trabalhando nele, e um Empregado só pode estar vinculado a um Setor.
Ao adotar o Hibernate, o uso desse tipo de relacionamento em nossos projetos implica na utilização das anotações @OneToMany e @ManyToOne, como veremos adiante.
Figura 1. Associaçãodo tipo 1:N.
Associações muitos-para-muitos
O relacionamento de cardinalidade muitos-para-muitos, representado pela notação N:N (lê-se N para N), é usado qua ...
Desbloqueie toda a DevMedia
-
+2000 artigos e vídeos
-
+40 trilhas sobre Front-end, Back-end, IA e muito mais
-
+5000 exercícios práticos
-
Mentorias ao vivo individuais
Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.