스프링이란?
- 자바 기반 기술이고, 자바는 객체 지향 프로그래밍
- 스프링의 최대 관심 대상 : 객체(Object). 이 관심은 오브젝트의 설계로 발전.
- 스프링은 오브젝트를 어떻게 효과적으로 설계하고, 구현하고, 사용하고, 개선해나갈 지에 대한 명쾌한 기준을 마련해 줌
- 객체 지향 기술과 설계, 구현에 관한 실용적인 전략과 검증된 best practice를 손쉽게 적용할 수 있도록 framework 형태로 제공.
DAO
- Data Access Object. DB 를 사용해 데이터 조회하거나 조작하는 기능을 전담하도록 만든 object
Java Bean: 두 가지 관례를 따라 만들어진 Object
- 디폴트 생성자: Java bean은 파라미터가 없는 default 생성자를 갖고 있어야 한다. 툴이나 프레임워크에서 리플렉션을 이용해 오브젝트를 생성하기 때문이다.
- 프로퍼티: 프로퍼티란 자바빈이 노출하는 이름을 가진 속성을 말한다. 프로퍼티는 getter와 setter를 이용해 수정 또는 조회할 수 있다.
JDBC 이용 작업 순서
- DB 연결을 위한 Connection 가져옴
- SQL을 담은 Statements(또는 PreparedStatement) 를 만듦
- 만들어진 Statement 실행
- 조회의 경우 SQL 쿼리의 실행 결과를 ResultSet으로 받아서 정보를 저장할 Object에 옮겨줌
- 작업 중에 생성된 Connection, Statement, ResultSet과 같은 리소스는 작업을 마친 후 반드시 닫아줌
- JDBC API가 만들어내는 예외를 잡아서 직접 처리하거나, 메소드에 throws를 선언해서 예외가 발생하면 메소드 밖으로 던지게 함
DAO의 분리
- 객체 지향의 세계에서는 object에 대한 설계와 이를 구현한 코드가 변한다
- 개발자가 Object 설계 시 가장 염두에 두어야 할 점은 미래의 변화를 어떻게 대비할 것이냐이다
- 관심사의 분리: 관심이 같은 것끼리는 하나의 객체 안으로 혹은 친한 객체로, 관심이 다른 것은 떨어져서 영향을 주지 않도록
- 커넥션을 가져 오는 중복 코드를 getConnection() 메소드 추출
변경 사항에 대한 검증: 리팩토링과 테스트
- refactoring: 기능의 변화는 없지만 내부 구조를 변경해서 재구성하는 작업 또는 기술.
상속을 통한 확장
- 상속을 사용해서 기존에는 같은 클래스에 다른 메소드로 분리됐던 메소드를 서브클래스로 분리할 수 있다. 이는 확장의 결과를 가져옴
template method pattern
- 슈퍼 클래스에 기본적인 로직의 흐름을 만들고, 그 기능의 일부를 추상 메소드나 overriding이 가능한 protected 메소드 등으로 만든 뒤 sub class에서 이런 method를 필요에 맞게 구현해서 사용하도록 하는 방법.
- hook method: 슈퍼클래스에서 디폴트 기능을 정의해두거나 비워뒀다가 서브클래스에서 선택적으로 override할 수 있도록 만들어둔 method
factory method pattern
- subclass에서 구체적인 object 생성 방법을 결정하게 하여 슈퍼 클래스의 기본 코드에서 독립시키는 방법
- factory method: subclass에서 object 생성 방법과 class를 결정할 수 있도록 미리 정의해 둔 method
디자인 패턴
- 소프트웨어 설계 시 특정 상황에서 자주 만나는 문제를 해결하기 위해 사용할 수 있는 재사용 가능한 솔루션
- 주로 객체 지향 설계에 관한 것
- 패턴에서 가장 중요한 것은 각 패턴의 핵심이 담긴 목적 또는 의도이다.