JPA는 ORM으로 객체와 테이블의 데이터가 매핑함으로써 개발자로써 번거롭게 SQL을 작성하지 않고 쉽게 데이터들을 관리할 수 있다. 그러나 매핑할 클래스의 프로퍼티들에 대해서 섬세하게 다루지 않는다면 쉽게 오류가 날 수 있다는 단점이 존재한다.
프로젝트를 진행하며 일반적으로 선언하는 primitive 자료형이 아니라, 설정을 따로 해주어야 하는 자료형들에 대해 정리해보았다.
@Column(columnDefinition = "TINYINT", length = 1)
private int status;
Column 설정에서 columnDefinition = “TINYINT” 로 따로 명시해주어야 정상적으로 작동한다.
public class Member{
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
@Column(name = "created_at")
@PrePresist
public void createdAt(){
this.createdAt = LocalDateTime.now();
this.updatedAt = createdAt;
}
@Column(name = "updated_at")
@PreUpdate
public void updatedAt(){
this.updatedAt = LocalDateTime.now();
}
}
@PrePersist 어노테이션을 추가하여 메소드를 만들어서 생성 시간을 세팅할 수 있다.
(예제에서는 메소드명과 변수명이 같기에 똑같이 했는데, 아마 똑같이 해야하는 듯..?)@PreUpdate 어노테이션으로 데이터가 변경될 시 필드가 변하도록 설정할 수 있다.