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.
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.
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.
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.
Jorge García
Fullstack developer