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