@ElementCollection Hibernate JPA com Spring Boot

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

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - Hibernate - TUTORIAL

Última atualização em: | 10592 Visualizações

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.


Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!