jpa 리포지토리 변경하면서 삽질

gnoesnooj·2022년 1월 19일
0

상황

  1. 기존 PostRepository 의 구현체로 MemoryPostRepository를 사용 중.
  2. 메소드는 savePost(), findPostAll() ... 등등
  3. JpaRepository를 활용하여 구현 필요
  4. 다형성을 위해 교체할 리포지토리인 JpaPostRepository 는 PostRepository, JpaRepository 둘 다 상속 받아야 함.
  5. 여기서, 다른 코드들을 건들이지 않고, 다형성을 지키면서 JpaPostRepository에 기존 메소드들을 활용하는 방법에 대해 고민이 시작됨.

내가 생각했던 오답들

  1. BoardService, PostRepository 등 메소드명 수정 ? (JpaRepository의 메소드명과 똑같이)
    -> 덮어쓰는거랑 똑같으니 XXX

  2. PostRepositry 의 메소드들을 JpaPostRepository 에 똑같이 오버라이드 후 우선순위 설정 ?
    -> @Primary 등을 강의에서 봤던 기억을 떠올린 시도였는데, 메소드 단위에선 XXX

  3. PostRepository 가 jparepository 상속받기 ?
    -> 만일 JpaRepository를 사용하기 싫을때 코드를 또 수정해야함.

정답

우리가 해야하는 것은 PostRepository의 메소드들이 JpaPostRepository 를 사용하도록 하면 되는 것이다. 따라서 하나의 클래스를 통해서 각각의 메소드들이 JpaPostRepository를 가리키게끔 코드를 짜주면 된다. -> 이것을 보고 어댑터 패턴이라고 한다.
JpaPostRepositoryAdapter 클래스를 만들어줘서 어댑터 패턴을 적용시켜줬다.

느낀 점

디자인 패턴, 그리고 정보처리기사를 공부하면서 어브캄데 퍼플프 하면서 단순 암기식으로 어댑터 패턴을 접했던 적이 있는데, 이렇게 등장할 줄은 몰랐다.
그리고 정답을 찾아가는 과정에 있어서, 근본적으로 어떻게 하면 지금 이 문제가 해결될 지에 대해 좀 더 깊게 생각하도록 노력해야겠다.

profile
누구나 믿을 수 있는 개발자가 되자 !

0개의 댓글