Você está aqui: JPA - Java Persistence Architecture API - Arquitetura de Persistência Java ::: Dicas & Truques ::: Relacionamentos e Mapeamento de Entidades |
||||||||
Aprenda a usar o mapeamento Many-to-One (muitos para um) em suas aplicações JPAQuantidade de visualizações: 3517 vezes |
||||||||
O mapeamento Many-to-One (muitos para um) ocorre quando temos várias entidades se relacionando com uma outra (e única) entidade. Como exemplo podemos citar as entidades Produto e Categoria. Cada produto pertence a apenas uma categoria e uma categoria pode possuir 0 ou mais produtos. No caso do mapeamento muitos-para-um nós estamos olhando a partir da entidade Produto. Se olhássemos a partir da entidade Categoria, o relacionamento seria um-para-muitos. Como outro exemplo de mapeamento Many-to-One, considere as entidades Pedido e Cliente. Cada pedido pertence a apenas um cliente e um cliente pode possuir 0 ou vários pedidos. Para começarmos, vamos criar duas tabelas no MySQL: produtos e categorias. Veja o comando SQL DDL CREATE TABLE para a tabela categorias:
Veja que esta tabela possui apenas dois campos. O campo id é do int, auto-incremento e marcado como chave primária. O campo nome é do tipo varchar. Use o comando abaixo para inserir um registro nesta tabela:
Se desejar, insira mais alguns registros na tabela categorias. Veja agora o comando SQL DDL CREATE TABLE para a tabela produtos:
A tabela produtos possui os campos id (do tipo int, auto-incremento e chave primária), descrição (do tipo varchar), id_categoria (do tipo int e usado como chave estrangeira referenciando o campo id da tabela categorias) e preco (do tipo double). Tendo criado as tabelas, passemos agora para a criação das entidades Produto e Categoria. Veja o código para a entidade Categoria: Código para Categoria.java:
Esta entidade não apresenta nada de novo, uma vez que o mapeamento será feito do lado "muitos", ou seja, na entidade Produto. Veja seu código agora: Código para Produto.java:
O primeiro ponto a observar é que a entidade Produto mantém uma referência a um objeto da classe Categoria. Há ainda o uso da anotação @ManyToOne para indicar o mapeamento (vários produtos para uma categoria) e @JoinColumn para indicar o campo da tabela produtos que foi usado como chave estrangeira para estabelecer a relação com a tabela categorias. Vamos agora ao arquivo persistence.xml para que você veja como estas duas entidades são declaradas: Código para persistence.xml:
E, finalmente, a classe principal da aplicação: Código para EstudosJPA.java:
Ao executarmos este código, o EclipseLink vai disparar as seguintes instruções SQL:
|
||||||||
![]() |
||||||||
Veja mais Dicas e truques de JPA - Java Persistence Architecture API - Arquitetura de Persistência Java |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |