JPA 에서 LocalDateTime
사용
- JPA 2.2 버전부터 공식지원
- 그 이전 버전은 추가적인 애노테이션이나 컨버터를 만들어야 함
컨버터 구현
import java.time.LocalDateTime;
import java.sql.Timestamp;
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
@Converter(autoApply = true) // If autoApply is set to true, the converter will be applied to all mapped attributes of the type and all parameters and results of queries that use the type.
public class LocalDateTimeAttributeConverter implements AttributeConverter<LocalDateTime, Timestamp> {
@Override
public Timestamp convertToDatabaseColumn(LocalDateTime locDateTime) {
return (locDateTime == null ? null : Timestamp.valueOf(locDateTime));
}
@Override
public LocalDateTime convertToEntityAttribute(Timestamp sqlTimestamp) {
return (sqlTimestamp == null ? null : sqlTimestamp.toLocalDateTime());
}
}
- 위와 같이 간단히 컨버터를 구현해서 사용하면 된다.
autoApply
를 사용하면 자동으로 적용이 된다.
수동으로 몇몇 필드에만 적용하고 싶다면?
autoApply = false
로 돌리면 된다.
@Entity
public class MyEntity {
@Id
private Long id;
@Convert(converter = LocalDateTimeAttributeConverter.class)
private LocalDateTime createdAt;
// ... other fields, getters, and setters ...
}
반응형
'프레임워크 > JPA (Java Persistence API)' 카테고리의 다른 글
@Embedded 와 @Embeddable 과 @AttributeOverrides 란? (0) | 2023.08.06 |
---|---|
왜 @Entity 는 인수가 없는 생성자가 필요하고 final 이면 안되는가? (0) | 2023.08.05 |
@Entity 애노테이션이란? (0) | 2023.08.05 |
@SecondaryTables 애노테이션이란? (0) | 2023.08.05 |