Por que eu devo ler este artigo:Este artigo é útil por apresentar como estabelecer relacionamentos múltiplos entre entidades com o Hibernate, requisito presente em qualquer aplicação que envolva persistência de dados. Para isso, aprenderemos de forma didática e simples como funcionam as associações OneToMany e ManyToMany, importantes opções para a persistência de dados. Primeiramente, abordaremos cada um desses relacionamentos através de uma análise geral. Em seguida, realizaremos a configuração de um ambiente de desenvolvimento com Maven, Eclipse e MySQL e, por fim, ensinaremos a modelagem de um cenário que faz uso de cada uma das opções mencionadas.

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.

Associaçãodo tipo 1:N

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 ...

Fim do trecho gratuito • continue abaixo
CONTEÚDO EXCLUSIVO

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
até 50% OFF
A partir de
R$ 69 /mês
Assinar agora