JpaRepository를 상속하지 않는 이유 라는 최범균님의 영상을 보고 포스팅해봅니다. extends JpaRepository public interface MemberRepository extends JpaRepository { } Jpa를 학습한 이후로 한 번도 JpaRepository 이외의 인터페이스를 확장해서 사용해본 적이 없었는데요, 최근 최범균님의 JPA 영상을 보다가 Repository 상속을 선호한다는 말씀을 접하게 되었습니다. 왜 그러한지에 대해서도 간명하게 친절하게 설명해주셔서 큰 도움이 되었습니다. 팀 프로젝트 동료들에게도 이 내용에 대해 공유해보았는데요, 모두들 공감해주어서 프로젝트에서도 Repository 상속을 사용하게 되었습니다. 그럼 왜 JpaRepository가 아닌 ..
전체 코드 보러 가기 ❌ Don't try this at home 호기심에 실험적으로 도전한 내용입니다. 오직 목적한 바에만 몰입하여 구현에만 집중했습니다. 코드 품질은 무시했으니 재미로 봐주시면 감사하겠습니다. ✍️ 제작 동기 레벨2 지하철 노선도 미션에서 Line, Station, Section 이라는 세 도메인을 만났습니다. 각 도메인 별 Dao가 만들어지고 유사한 CRUD로직이 나타나고 있었습니다. 이들을 하나의 CRUD로 추상화해서 중복을 제거해보고 싶었습니다. JPA를 아주 살짝 사용해본 경험과, 미션의 예시 코드에서 ReflectionUtils를 사용한 내용이 힌트가 되었습니다. Jackson 라이브러리가 JSON 객체를 직렬화, 역직렬화 하는 과정에서 기본 생성자로 인스턴스를 생성한 뒤, ..
Component, Repository, Service 애너테이션 중 무엇을 사용하더라도 Spring Bean에 등록되는 건 동일합니다. 그럼 어떤 차이가 있고, 둘을 구분해서 사용하는 기준은 무엇일까요? 1. 🔎 Component Scan 스프링은 설정된 범위를 탐지해 Spring Bean으로 생성해 Application Context에 보관합니다. 모든 클래스를 Spring Bean으로 생성해두는 것은 아니고, 그러하도록 선언된 클래스들을 생성합니다. Spring Bean으로 생성하도록 선언하는 방법은 크게 세 가지가 있습니다. XML 선언 방법은 이젠 잘 사용되지 않는 방법입니다. @Configuration 클래스 내부에 @Bean 메서드로 선언하는 방법도 있습니다. 마지막으로 가장 많이 사용되는 ..