@ElementCollection Hibernate JPA com Spring Boot

Postado em por Wolmir Cezer Garbin em Hibernate | 44 Visualizações
Última atualização em:

Veja neste post como usar a anotação @ElementCollection do Hibernate JPA para criar uma coleção de itens associados a uma classe

Todo mundo tem algo para vender, AnuncieOn.com o melhor site de anúncios grátis de todo o Brasil. ABRIR

Em alguma situações específicas queremos criar uma coleção de itens associados a um objeto java.

Para entender melhor, veja o exemplo:

Considere um objeto Postagem, o objeto refere-se a um post qualquer, este post pode possuir uma ou mais tags. Considerando este exemplo teriamos que criar uma nova tabela ou Objeto para gravar as tags. O elemento @ElementCollection permite fazer este mapeamento de uma maneira muito mais simples, veja:


Esta é a classe Postagem:

import lombok.*;

import javax.persistence.*;
import java.io.Serializable;
import java.util.List;

@Entity
@Table(name="POSTAGENS")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Postagens implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private Long id;

    private String titulo;

    [... Todos os outros campos ...]

    @ElementCollection
    private List<String> tags;

}

Perceba que o atributo tags é apenas um campo do tipo List<String> que deve possuir as tags adicionadas ao post.

Segundo este exemplo, teremos no banco de dados as seguintes tabelas:

POSTAGEM
+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| id              | bigint(20)   | NO   | PRI | NULL    | auto_increment |
| Todos os outros campos ...                                             |

E o atributo tags, vai gerar a seguinte tabela auxiliar:

POSTAGEM_TAGS
+--------------+--------------+------+-----+---------+-------+
| Field        | Type         | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| postagem_id  | bigint(20)   | NO   | MUL | NULL    |       |
| tags         | varchar(255) | YES  |     | NULL    |       |
+--------------+--------------+------+-----+---------+-------+

Dessa forma a anotação @ElementCollection do Hibernate JPA favorece o desenvolvimento, tornando mais simples e prático a associação com multiplos elementos.

Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Wolmir Cezer Garbin

Wolmir Cezer Garbin


Sou formado em Desenvolvimento de Sistemas para Internet pela faculdade Mater Dei e Pós graduado em Desenvolvimento de sistemas em Java pela UTFPR. Trabalho a mais de 9 anos com desenvolvimento em Java, Android e Web utilizando as principais tecnologias do mercado. Atuo como professor na faculdade Mater Dei, programador na Garbo Software e criador do Receitas de Código.

Ver mais

FIQUE POR DENTRO

Receba as novidades todo mês em seu e-mail!

Apoiadores


Publique seu post no Receitas de Código

Agora você pode publicar seu post no Receitas de Código e compartilhar seu conhecimento com muitas pessoas!

Quero publicar