TIL/2024 원티드 프리온보딩 백엔드 인턴십

[TIL] 원티드 프리온보딩 백엔드 인턴십 Week3) 18일차, 0906

ryuneng 2025. 1. 23. 00:05
반응형

✔️ 오늘 한 일

  • 2차 온라인 커리어코칭 참여
  • 디렉토리 구조 설정
  • Entity 클래스 작성
  • gPRC 조사


👀 오늘의 이슈

- JPA Auditing을 활용한 엔티티 생성 및 수정 시간 관리를 위한 Base 클래스 선택 과정

  • 고민한 내용
    • 각 도메인 엔티티 클래스를 생성하는 과정에서 생성 및 수정 시간을 자동으로 관리해주는 BaseEntity, BaseTimeEntity, Timestamped 중 어떤 클래스를 사용할지 고민함
  • 분석
    • BaseEntity
      • 시간 정보 뿐만 아니라, 엔티티에서 공통적으로 사용될 필드를 포함하는 부모 클래스
    • BaseTimeEntity
      • 시간 관련 로직에 특화되어 있으며, 엔티티의 시간 정보만 관리할 때 유용
    • Timestamped
      • 단순한 시간 관리만 필요할 때 사용
      • BaseTimeEntity와 필드 이름이나 기능이 조금 다를 수 있지만, 시간 필드를 자동으로 처리하는 기능적 측면에서 유사함
  • 결론
    • 이번 과제에서는 모든 엔티티에 cretaed_at, updated_at 뿐만 아니라 deleted_at, deleted_yn 필드를 공통으로 추가하도록 설계했기 때문에 BaseEntity가 적절하다고 판단하여 BaseEntity를 사용했다.


💡 Today I Learned

1. @EnableJpaAuditing을 분리해야하는 이유

BaseEntity를 사용하기 위한 설정 방법에는 2가지가 있다.
1. App.java 클래스에 @EnableJpaAuditing 부착하는 방법
2. 별도의 JpaAuditingConfig 클래스를 생성하는 방법

  • 첫번째 방법을 사용할 경우, @WebMvcTest(OOO.class)로 Controller 테스트를 진행할 때 문제가 발생할 수 있다. 모든 테스트는 Application 클래스가 항상 로드되면서 실행되며, @EnableJpaAuditing이 등록되어 있으면 모든 테스트가 JPA 관련된 Bean을 필요로 하게 된다.
    하지만, @WebMvcTestJPA 관련 Bean들을 로드하지 않기 때문에 이로 인해 문제가 발생할 수 있다.
  • 따라서, 두번째 방법처럼 @Configuration으로 설정 파일을 분리하는 것이 좋다.
  • 참고 URL 🔗 https://hellorennon.tistory.com/9

2. gPRC (Google Remote Procedure Calls)

  • RPC(Remote Procedure Calls)란?
    • 다른 컴퓨터에 있는 기능을 마치 로컬에서 실행하는 것처럼 사용할 수 있게 해주는 프로토콜
  • gPRC (Google Remote Procedure Calls) : 구글에서 만든 RPC 프레임워크
  • 학습한 내용을 블로그에 정리해보았다.
    🔗 https://velog.io/@ryuneng2/gRPC란

 


< 해당 글은 velog에서 이전하며 옮겨온 글로, 가독성이 좋지 않을 수 있는 점 양해 부탁드립니다. >

🔗 velog 버전 보기 : https://velog.io/@ryuneng2/TIL-원티드-프리온보딩-백엔드-인턴십-Week3-18일차-0906