Spring/SpringBoot (JPA)

[JPA] Postgreql 타임스탬프 매핑, 생성 수정시간 자동생성

keartt 2024. 8. 27. 17:58
반응형

__ Postgresql Timestamp Entity 설정법
__ JPA 테이블 생성시간, 수정시간 자동생성 하는 법__

 


Postgresql Timestamp 형식 Entity 설정하는 법

아래랑 다른 형식 쓰면 bytea 로 들어가고 난리임

@Column(nullable = false, updatable = false)
private LocalDateTime createTime;

@Temporal(TemporalType.TIMESTAMP)
private Date loginTimestamp;

private Timestamp logTimestamp; // 매핑될 필드

Postgresql 의 DEFAULT CURRENT_TIMESTAMP 설정 주는 법

아래처럼 설정하면 DDL 에 DEFAULT CURRENT TIMESTAMP 들어감

    @Column(updatable = false, insertable = false, nullable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
    private LocalDateTime createTime;

    @Column(nullable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
    private LocalDateTime editTime;

자바에서 값 넣는법 (when Entity called)

아래와 같이 어노테이션을 통해 엔티티호출 상황에 맞게 시간값을 넣어줌

엔티티에 추가하면 됨

    @PrePersist
    protected void onCreate() {
        this.createTime = LocalDateTime.now();
        this.editTime = LocalDateTime.now();
    }

    @PreUpdate
    protected void onUpdate() {
        this.editTime = LocalDateTime.now();
    }
  • @PrePersist : 엔티티가 처음 데이터베이스에 저장될 때 호출. 엔티티가 데이터베이스에 새로 추가될 때 실행
  • @PrePersist : 엔티티가 데이터베이스에서 업데이트될 때 호출. 엔티티의 데이터가 변경되어 업데이트 될 때 실행

프로젝트 실행시마다 테이블 초기화된다면?
spring.jpa.hibernate.ddl-auto=update

반응형