@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
Última atualização em: | 11016 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 tipoList<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.