[aws] JPA Auditing
개발을 하다보면 테이블마다 공통적으로 들어가는 데이터가 있습니다. 이걸 모든 엔티티마다 생성하는 방법도 있지만 오늘은 JPA의 Auditing이란 기술을 써보려고 합니다.
main에 꼭 @EnableJpaAuditing
를 작성해줘야 합니다.
@SpringBootApplication
@EnableJpaAuditing
public class AwsSpringbootWebserviceApplication {
public static void main(String[] args) {
SpringApplication.run(AwsSpringbootWebserviceApplication.class, args);
}
}
abstract class BaseTimeEntity 작성
- 이 클래스를 상속 받은 자식 클래스엔 자동으로
createdAt
,modifiedAt
이 생깁니다.@Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public abstract class BaseTimeEntity { @CreatedDate private LocalDateTime createdAt; @LastModifiedDate private LocalDateTime modifiedAt; }
Test
BaseTimeEntity
는 엔티티이기 때문에 repository를 테스트할겁니다.
@SpringBootTest
class PostRepositoryTest {
@Autowired
PostsRepository postsRepository;
@AfterEach
public void clean(){
postsRepository.deleteAll();
}
// ...
@Test
public void BaseTimeEntity_등록(){
//given
LocalDateTime now = LocalDateTime.of(2023,10,12,0,0,0);
postsRepository.save(Posts.builder()
.title("시간 테스트 게시글")
.content("시간 테스트 게시글 본문")
.author("jojoldu@gmail.com")
.build());
//when
List<Posts> postsList = postsRepository.findAll();
//then
Posts posts = postsList.get(0);
System.out.println("post createdAt" + posts.getCreatedAt());
System.out.println("post modifiedAt" + posts.getModifiedAt());
assertThat(posts.getCreatedAt()).isAfter(now);
assertThat(posts.getModifiedAt()).isAfter(now);
}
}
댓글남기기