Hibernate JPA e atributos ENUM

by Cinta Vidal Agullo / from beautifuldecay.com

É bem comum esbarrarmos com algumas colunas de tabelas de banco de dados que só aceitem valores dentro de um conjunto estipulado. Por exemplo, coluna sexo da tabela pessoa apenas aceita os valores ‘MASCULINO’ e ‘FEMININO’, e em nosso sistema que faz uso do Hibernate, comumente nossa classe Pessoa teria um atributo sexo do tipo String.

Mas o atributo ser String possibilita que ele receba outros valores além de ‘MASCULINO’ e ‘FEMININO’, podendo falhar em casos semelhantes de corresponder às regras de negócio. Então, o correto seria esse atributo ser um enum com esse valores fixos e não uma String, mas como fazer isso se estamos trabalhando com o JPA?

O primeiro passo é criar uma classe que implemente a interface org.hibernate.usertype.UserType do Hibernate para criarmos o nosso próprio tipo, um tipo genérico de enum. Essa classe também deverá implementar a interface org.hibernate.usertype.ParameterizedType para que possamos passar via annotation para ela o nosso enum específico.

Tendo nossa classe, basta agora criarmos nosso enum para o atributo sexo. Lembrando que obrigatoriamente todo valor contido nesse enum deve ser exatamente como os prefixados para a coluna sexo.

E por fim, deixaremos de usar String como tipo para nosso atributo da classe Pessoa. Para isso, usaremos a annotation @Type, informando a ela nossa classe que implementa UserType, e passarmos como parâmetro nosso enum específico dessa coluna.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s