Volver a la página principal
jueves 6 febrero 2025
2

Cómo usar @Converter en Spring Boot

La anotación @Converter en Spring Boot se utiliza para definir convertidores personalizados en JPA (Java Persistence API). Estos convertidores permiten transformar automáticamente los datos entre tipos Java y tipos de base de datos al persistir o recuperar información.

¿Qué es @Converter en Spring Boot?

En JPA, la anotación @Converter se usa para especificar una clase que convierte valores de un tipo a otro en la base de datos. Esto es útil cuando se necesita almacenar un objeto complejo como una cadena o convertir datos almacenados en la base de datos a una estructura más manejable en Java.

Para que un convertidor funcione correctamente, debe implementar la interfaz AttributeConverter<X, Y>, donde:

  • X es el tipo de datos en Java.
  • Y es el tipo de datos en la base de datos.

La anotación @Converter(autoApply = true) permite que el convertidor se aplique automáticamente a todos los atributos del mismo tipo.

Implementación de un convertidor personalizado

import jakarta.persistence.AttributeConverter;
import jakarta.persistence.Converter;

// Convertidor de Boolean a Integer
@Converter(autoApply = true)
public class BooleanToIntegerConverter implements AttributeConverter<Boolean, Integer> {

    @Override
    public Integer convertToDatabaseColumn(Boolean attribute) {
        return (attribute != null && attribute) ? 1 : 0;
    }

    @Override
    public Boolean convertToEntityAttribute(Integer dbData) {
        return dbData != null && dbData == 1;
    }
}

En este ejemplo, el convertidor transforma valores Boolean en Integer para la base de datos, donde true se almacena como 1 y false como 0.

Ejemplo de uso en una entidad

import jakarta.persistence.Entity;
import jakarta.persistence.Id;

@Entity
public class Usuario {

    @Id
    private Long id;

    private Boolean activo; // Se aplicará el convertidor automáticamente

    // Getters y setters
}

Gracias a @Converter(autoApply = true), cualquier campo Boolean en una entidad JPA se convertirá automáticamente en Integer al persistir en la base de datos.

Referencias

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer