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
와 필드 이름이나 기능이 조금 다를 수 있지만, 시간 필드를 자동으로 처리하는 기능적 측면에서 유사함
- BaseEntity
- 결론
- 이번 과제에서는 모든 엔티티에
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을 필요로 하게 된다.
하지만,@WebMvcTest
는 JPA 관련 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