Usando LocalDate do Java 8 no JavaEE7

No Java 8 foi disponibilizado a nova API de datas, java.time.*, a qual é baseada no JodaTime. Mas como utilizar essa API no contexto de javaEE ? Sabendo que o EE atual é 7, ou seja, possui suporte apenas até o jdk7.

Para que isso seja possível, precisamos criar um conversor de atributo do JPA, para que quando mapeado um LocalDate em entidades, será convertido em um Date, o qual o JPA tem suporte de persistência.

import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
import java.sql.Date;
import java.time.LocalDate;

@Converter(autoApply = true)
public class LocalDatePersistenceConverter implements AttributeConverter<LocalDate, Date> {

    @Override
    public java.sql.Date convertToDatabaseColumn(LocalDate entityValue) {
        return java.sql.Date.valueOf(entityValue);
    }

    @Override
    public LocalDate convertToEntityAttribute(java.sql.Date databaseValue) {
        return databaseValue.toLocalDate();
    }
}
  • @Converter: Marca a classe como um conversor de atributos para entidades;
  • autoApply = true: Aplica o conversor automaticamente para todos atributos definido no X do AttributeConverter;
  • AttributeConverter: Implementa um conversor de atributo, onde X é o tipo esperado e Y é o tipo convertido;
  • convertToDatabaseColumn: Define a conversão de X para Y;
  • convertToEntityAttribute: Define a conversão de y para X.
Anúncios

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 )

w

Conectando a %s