본문 바로가기
Spring Framework/Spring

[토비의스프링] 1장 오브젝트와 의존관계 - DAO(1)

by devstep 2022. 3. 16.

느낀점

  • 스프링은 객체지향이다.
  • 객체지향은 리팩토링을 위한 것 같다.
  • 오늘 읽은 파트는 최범균님의 "객체지향과 디자인패턴" 책의 더 긴 버젼같다.

한 줄 요약

"스프링은 오브젝트를 어떻게 효과적으로 설계하고 구현하고, 사용하고, 이를 개선 해나갈 것인가에 대한 명쾌한 기준을 마련해준다."

"리팩토링은 개발자가 직관적으로 수행할 수 있긴 하지만. 본격적으로 적용하려면 학습과 훈련
이 필요하다. 나쁜 냄새에는 어떤 종류가 있다"

내용 요약

DAO클래스의 문제점

  • DB에서 데이터를 가져오는 DAO클래스를 절차적으로 작성한 후 어떻게 테스트하고 어떻게 재사용할 것인지에 대해 다룬다.
  • main()를 통한 테스트 : 처음에는 해당 DAO 클래스 내에서의 main()메서드에서 테스트하는 방법을 소개한다.
  • 문제점 :main()메서드 내에서의 테스트는 여러 번 테스트 시 DB 내 data를 삭제해주어야 정상작동하며 main()이 포함된 부분은 납품 코드가 될 수는 없다.
  • 문제가 많은 DAO클래스를 객체지향 원리에 충실한 스프링 스타일 코드로 개선해보는 작업을 해본다.
  • 왜 개선해야 하고 어떤 장점이 있을지 차차 알아보고자 한다.

DAO 분리

  • 먼저 관심사대로 분리한다.
  • 중복 코드의 메서드를 추출한다.
  • 또는 DAO클래스의 일부 메서드를 상속을 통해 서브클래스로 분리한다.
  • 이러한 과정이 리팩토링이며, 개발자가 직관적으로 수행할 수 있지만 본격적으로 적용하자면 학습과 훈련이 필요하다.
  • 템플릿 메서드 패턴
    • 수퍼클래스에서 로직의 흐름을 만들고, 그 기능의 일부를 오버라이딩 가능한 protected 메서드등을 만든 뒤 서브클래스에서 구현해 사용하도록 하는 방법이다.
    • 많이 사용되는 예시는 인증으로, 인증의 흐름은 같으나 인증 처리 과정이 다를 때 처리과정만 따로 서브클래스로 분리하도록 하는 방법이다.
  • 팩토리 메서드 패턴
    • 서브클래스에서 구체적인 오브젝트 생성 방법을 결정하게 하는 것을 팩토리 메소드 패턴factory method pattern이라고 부르기도 한다.
  • DAO 분리 설명을 "UserDao에 팩토리 메소드 패턴을 적용해서 getConnection( )을 분리합시다”라는 한마디로 표현할 수 있다.

삼색볼펜법 그룹스터디

애자일컨설팅 김창준 대표님의 삼색볼펜법 학습법을 적용한 스터디를 하게 되었다.
스터디를 준비해가지 않아도 되는 장점이 있어 비교적 편한 마음으로 참석을 하고 2시간 동안 진행했다.
20분씩 책을 읽고, 발표가 20분 정도 소요되었다. 책 읽은 분량은 12페이지 정도였다.
그렇게 2번을 반복하고 회고하고 스터디가 종료되었다.

이런 식의 그룹스터디는 처음이라 할 때는 느끼지 못했던 것이 정리하면서 떠오르는데,
기존의 스터디는 미리 준비해야 하는 예습형 스터디라면, 삼색볼펜법 스터디는 복습형 스터디 같다.

스터디가 끝나고 쉬다가 다시 컴퓨터 앞에 앉아서 간단히 몇 줄만 써야지 했는데 생각보다 길게 정리를 하게 되면서 복습형 스터디 같다는 생각을 했다.

예습은 스터디 참여에 필수가 되어서 부담이 되지만, 복습은 개인의 선택이라 부담이 덜하고 복습을 하면서 빠르게 책을 2번 훑게 되면서 내 용어로 정리하게 되어 좋은 것 같다.

그리고 항상 느끼는 것이지만 개발공부는 혼자 하는 것보다는 여러 사람의 의견을 듣는 것이 언제나 좋다.
기술의 깊이와 경험이 비슷할지라도 목소리를 내고 듣는 것이 학습이나 나에게 좋은 영향을 끼침을 느낀다.

댓글