반응형
JPA 를 사용하면서 DB 에 어떤 특정값이 들어오면 변환해줘야 할 떄가 있다.
예를 들어 empty string 을 null 로 넣어줘야 할떄다. (mysql)
빈스트링이 "" 가 들어올때 null 로 바꿔서 db 에 넣고 싶을때 @Convert 가 필요하다,
이 외에도 어떤 고정된 값들은 특정 값으로 변환해서 db 에 넣어줄떄 이 Convert 가 필요하다.
구현 방법은 변경하고자 하는 컬럼명 위에 @Convert 적고, 커스텀한 Class 명을 기입한다.
@Table(name = "db1.test")
public class Test {
...
@Convert(converter = EmptyStringToNullConverter.class)
@Column(name = "test_data")
private String test_data;
...
}
커스텀할 Classs 에는 AttributeConverter 를 구현한다.
이름 그대로 디비 넣기 전에 변환해주는 메소드명은 convertToDatabaseColumn 에서 구현한다.
반대로 db 에서 꺼내서 vo,entity 에서 사용할떄는 convertToEntityAttribute 를 사용해서 다시 변환해 준다.
@Converter(autoApply = true)
public class EmptyStringToNullConverter implements AttributeConverter<String, String> {
@Override
public String convertToDatabaseColumn(String string) {
// Use defaultIfEmpty to preserve Strings consisting only of whitespaces
return "".equals(string) ? null : string;
}
@Override
public String convertToEntityAttribute(String dbData) {
//If you want to keep it null otherwise transform to empty String
return dbData;
}
}
참고문헌
https://www.baeldung.com/jpa-attribute-converters [jpa 컨버터]
반응형
'Spring > JPA' 카테고리의 다른 글
Spring JPA Pageable 처리 - sort 및 Page 처리(totalElements) (0) | 2024.01.09 |
---|---|
[spring JPA] column annotation 컬럼 매칭 레퍼런스 (0) | 2021.05.03 |
[Spring JPA] @Id와 @GeneratedValue - Primary Key 생성방법 (0) | 2021.04.02 |
[Spring JPA] jpa 사용하기 - JpaRepository (0) | 2021.04.02 |
[Spring JPA] Column으로 쓰지않는 변수에 대한 선언. @Transient (0) | 2020.09.22 |