Troble Shooting ( JPA Auditing )

song yuheon·2023년 8월 29일
0

Trouble Shooting

목록 보기
1/57
post-thumbnail

JPA Auditing 이해하기

JPA Auditing은 Spring Data JPA에서 제공하는 특성 중 하나로, 엔터티의 생성 및 수정 시각을 자동으로 관리해주는 기능이다. 이 글에서는 이 기능이 어떻게 동작하는지와 관련된 여러 의문점들을 해결하고자 한다.

발생 문제

내가 처음 생각한건 객체를 만들었을때 바로 시간이 추가된다고 생각했다 하지만 null로 초기화 되지 않았다.

1. 객체 생성 시점에서의 createdAtmodifiedAt 초기화

JPA Auditing을 이용하면 @CreatedDate@LastModifiedDate 애노테이션을 사용하여 필드를 표시할 때, 해당 필드들은 엔터티가 데이터베이스에 저장되거나 업데이트될 때 자동으로 설정된다. 중요한 점은, 단순히 객체를 생성하는 것만으로는 해당 필드가 초기화되지 않는다는 것이다.

예를 들어, LevelOneData 객체를 생성하였을 때, createdAtmodifiedAt 필드는 초기화되지 않는다. 그러나 해당 객체가 데이터베이스에 저장되는 시점, 즉 mainRepository.save(levelOneData)가 호출될 때, JPA Auditing 기능이 적용되어 해당 필드에 값이 할당된다. 이 순간에 이 필드들은 자동으로 현재 시각으로 설정된다.

2. JPA Auditing 동작 시점

JPA Auditing은 데이터베이스에 엔터티가 실제로 저장되거나 업데이트될 때만 작동한다. 따라서, 객체를 생성한 후 데이터베이스에 저장하기 전에 createdAtmodifiedAt 값을 검사하면 null을 반환한다. 객체가 데이터베이스에 저장된 이후에 해당 값을 검사하면, 올바른 시간 값이 할당되어 있을 것이다.

* 정리

JPA Auditing은 엔터티의 생명주기와 밀접하게 연관되어 있다. 객체의 생성 단계에서는 해당 기능이 동작하지 않는다. 데이터베이스와 연관 될 때 기능은 동작한다!!


profile
backend_Devloper

0개의 댓글