도도한 개발자

[TIL] 2023/08/07 본문

TIL

[TIL] 2023/08/07

Kiara Kim 2023. 8. 7. 23:52

🐈‍⬛ 오늘 공부한 내용

  • [스프링 핵심 원리] 섹션3 ~ 섹션4
  • @CreatedDate, @LastModifiedDate
  • @EnableJpaAuditing
  • @MockBean(JpaMetamodelMappingContext.class)

 🐾 느낀 점 & 배운 점

아침에 지하철에서부터 캠퍼스 도착해서 밥 먹을 때까지 김영한의 스프링 핵심 원리 강의를 계속 들었다. 레벨2때 다 들었어야 했던건데 이미 지난 일이니 별 수 있나. 오늘이 앞으로의 인생에서 가장 젊은날이니 지금부터 해도 안늦었다고 생각한다. 일단 뭐라도 하는게 중요하니까.

 

3차 데모데이 발표때 구구가 우리 프로젝트 ERD 보면서 테이블에 생성일이랑 수정일이 없다는 부분을 지적해주셨다. 지적과 동시에 왜 이 컬럼들이 필요한지에 대해서도 말씀해주셔서 바로 적용하고싶었다. 주기적으로 스케줄링이 돌면서 DB값들이 갱신되는데 이때마다 그 값이 실제로 갱신됐는지 알 수 있는 지표라고 하셨기 때문이다. 그래서 일요일 새벽에 '음~ 그냥 @CreatedAt이랑 @LastModifiedDate 어노테이션만 붙이고 모든 엔티티에 상속만 하면 되겠네!' 해서 테스트도 안돌려보고 pr 날렸다. (제정신입니까 휴먼) 당연히 뭐 깨지지. 우리는 jdbcTemplate으로 DB에 쿼리를 날리는데 그 부분을 작성 안했으니까. 

 

save하는 쿼리엔 생성일과 수정일을, update하는 쿼리엔 수정일만 추가해서 값이 변하도록 했다. 그런데 저장되는 시간을 언제로 설정해야되는지 몰라서 고민했다. 해당 객체를 만드는 시점인지, 아님 만든 후 넣는 그 순간인지 정확히 어느 시점에 저장되는지도 몰랐기 때문. 

위에 적힌 아래 두 어노테이션은 짧게 정리하자.

 

- @EnableJpaAuditing

    main 메서드가 있는 클래스에 적용하는데, Audit이라는 말에서 알 수 있듯 감시하는 기능을 활성화하는 어노테이션이다. 이 어노테이션을 적용하면 @CreatedDate나 @LastModifiedDate처럼 DB에 데이터가 저장되거나 수정될 때 언제했는지(설정에 따라 누가 했는지도) 자동으로 관리할 수 있다.

 

- @MockBean(JpaMetamodelMappingContext.class)

    JPA metamodel must not be empty!

    @WebMvcTest로 테스트를 진행하면서 마주한 에러다. 해석하면, JPA 메타 모델은 비워둘 수 없다는 말이다. 알아보니 @WebMvcTest는 JPA 관련 Bean을 로드하지 않는 테스트 어노테이션이기 때문에 위의 @EnableJpaAuditing과 같은 Jpa Auditing 기능을 사용할 땐 컨트롤러 테스트 클래스 위에 이 어노테이션을 붙이면 된다.

💭 감정회고

이번주 풀 약속이다. 이 썩어빠진 정신머리를 어찌할꼬. 근데 약속이라고 공부 못하는거 아니잖아. 시간을 사람 만나는 곳에 쏟은 만큼 더 알차고 열심히 잘 공부하자. 아 근데 진짜 덥네..💦

'TIL' 카테고리의 다른 글

[TIL] 2023/08/09  (2) 2023.08.09
[TIL] 2023/08/08  (0) 2023.08.08
[TIL] 2023/08/06  (4) 2023.08.06
[TIL] 2023/08/05  (2) 2023.08.05
[TIL] 2023/08/04  (1) 2023.08.04