JPA Auditing은 Spring Data JPA에서 제공하는 특성 중 하나로, 엔터티의 생성 및 수정 시각을 자동으로 관리해주는 기능이다. 이 글에서는 이 기능이 어떻게 동작하는지와 관련된 여러 의문점들을 해결하고자 한다.
createdAt
및 modifiedAt
초기화JPA Auditing을 이용하면 @CreatedDate
및 @LastModifiedDate
애노테이션을 사용하여 필드를 표시할 때, 해당 필드들은 엔터티가 데이터베이스에 저장되거나 업데이트될 때 자동으로 설정된다. 중요한 점은, 단순히 객체를 생성하는 것만으로는 해당 필드가 초기화되지 않는다는 것이다.
예를 들어, LevelOneData
객체를 생성하였을 때, createdAt
및 modifiedAt
필드는 초기화되지 않는다. 그러나 해당 객체가 데이터베이스에 저장되는 시점, 즉 mainRepository.save(levelOneData)
가 호출될 때, JPA Auditing 기능이 적용되어 해당 필드에 값이 할당된다. 이 순간에 이 필드들은 자동으로 현재 시각으로 설정된다.
JPA Auditing은 데이터베이스에 엔터티가 실제로 저장되거나 업데이트될 때만 작동한다. 따라서, 객체를 생성한 후 데이터베이스에 저장하기 전에 createdAt
및 modifiedAt
값을 검사하면 null
을 반환한다. 객체가 데이터베이스에 저장된 이후에 해당 값을 검사하면, 올바른 시간 값이 할당되어 있을 것이다.
JPA Auditing은 엔터티의 생명주기와 밀접하게 연관되어 있다. 객체의 생성 단계에서는 해당 기능이 동작하지 않는다. 데이터베이스와 연관 될 때 기능은 동작한다!!