1장 오브젝트와 의존관계(1)

Soonwoo Kwon·2022년 2월 10일
0

토비의 스프링

목록 보기
1/11

1.1 초난감 DAO


DAO(Data Access Control)

DB를 사용해 데이터를 조회하거나 조작하는 기능을 전하도록 만든 오브젝트이다.

자바빈

다음 두 가지 관례를 따라 만들어진 오브젝트를 가리킨다

  • 디폴트 생성자
  • 프로퍼티

Statement

sql 구문을 실행하는 객체

PreparedStatement

statement를 상속받는 인터페이스로 SQL구문을 실행시키는 기능을 갖는 객체

ResultSet

statement 객체로 SELECT문을 사용하여 얻어온 레코드 값들을 테이블의 형태로 각는 객체

excuteQuery()

수행결과로 ResultSet 객체의 값을 반환하는 메소드

정리

  • MySQL 드라이버를 통해 DB에 연결하여 간단한 SQL 쿼리를 실행하는 UserDao.java를 생성하였다.
  • 지금까지는 정상적으로 구동되는 코드이지만 미래에 대한 변화의 대비가 없고, 예외 상황에 대한 고려가 없다.

1.2 DAO의 분리


관심사의 분리

  • 객체 설계시 미래에 변화에 대한 대응을 고려하여야 한다.
  • 관심사에 따라 객체를 분리하여 프로그래밍을 한다.

UserDao의 관심사항

  1. DB와의 커넥션
    • 어떤 드라이버
    • 커센션 생성 방법 등
  2. Statement의 생성과 실행
    • Statement를 통해 SQL을 실행한다.
  3. 공유 리소스 반환
    • Statement, Connection 오브젝트를 닫는다.

userDao에는 위와 같은 다양한 관심 사항이 모여있다. 관심사를 분리하여 각 기능들을 독립적으로 관리하는 방법이 효율적이다.

DB 커넥션 만들기의 독립

  • UserDao 클래스를 abstract 클래스로 구현하고, getConnection() 메소드를 abstract 메소드로 구현한다.
  • UserDao를 이용하기 위해 UserDao를 상속받아 getConnection() 메소드를 원하는 방식으로 확장하게 되고 자유롭게 DB 커넥션을 생성하여 사용할 수 있다

디자인 패턴

  • 소프트웨어 설계 시 특정 상황에서 자주 만나는 문제를 해결하기 위해 사용할 수 있는 재사용 가능한 솔루션
  • 클래스 상속
  • 오브젝트 합병

팩토리 메소드

  • 서브클래스에서 오브젝트 생성 방법과 클래스를 결정할 수 있도록 미리 정의해둔 메소드팩토리 메소드 패턴
  • 팩토리 메소드를 통해 오브젝트 생성 방법을 슈퍼클래스의 기본 방법에서 독립시키는 방법용어 정리

abstract method

  • 추상 메소드(abstract method)란 자식 클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드를 의미한다.

abstract class

  • 하나 이상의 추상 메소드를 포함하는 클래스를 가리켜 추상 클래스(abstract class)라고 한다.

접근 제어자

  • private
    • private 이 붙은 변수, 메소드는 해당 클래스에서만 접근이 가능하다.
  • default
    • 접근 제어자가 없는 변수, 메소드는 default 접근 제어자가 되어 해당 패키지 내에서만 접근이 가능하다.
  • protected
    • protected가 붙은 변수, 메소드는 동일 패키지의 클래스 또는 해당 클래스를 상속받은 다른 패키지의 클래스에서만 접근이 가능하다.
  • public
    • public 접근제어자가 붙은 변수, 메소드는 어떤 클래스에서라도 접근이 가능하다.

정리

  • 템플릿 메소드 패턴 또는 팩토리 메소드 패턴으로 관심사항이 다른 코드를 분리해 내는 방법을 적용하였다.
  • 매우 간단하고 효과적인 방법이지만 상속을 사용했다는 단점이 있다.단점
  • 다중상속을 허용하지 않아 문제가 생길 수 있다.
  • 상하위 클래스간의 관계가 생각보다 밀접하다

0개의 댓글