Spring

[스프링 #1] 스프링 개념 및 DAO

zamezzz 2017. 12. 27. 23:34

스프링 #1. 스프링 개념 및 DAO



스프링(Spring)이란 ?


자바 애플리케이션 개발에 사용되는 애플리케이션 프레임워크. 

애플리케이션 개발을 빠르고 효율적이게 할 수 있도록 도와주며, 이를 위해 IoC/DI, AOP, 서비스 추상화 등의 프로그래밍 모델을 지원해줍니다.

개발을 위해 쉽게 사용할 수 있도록 다양한 기술 API 또한 제공해줍니다.


● 스프링의 각 요소(1) - DAO


DAOData Access Object의 약자로 DB를 사용해 데이터를 조회하거나 조작하는 기능을 전담하도록 만든 오브젝트를 말합니다.


DAO에 필요한 사항은 크게 3가지로 나눌 수 있습니다.

1) DB와 연결을 위한 Connection

2) DB에 보낼 SQL문장을 담은 Statement를 만들고 실행

3) 작업이 끝난 후 사용한 리소스를 반납


DAO는 DB를 이용해 작업하는 오브젝트이죠. 일반적인 작업순서는 아래와 같습니다.

1) DB 연결을 위한 Connection

2) SQL을 담은 Statement 작성

3) Statement 실행

4) 실행 결과를 Resultset으로 받아 정보를 저장할 오브젝트에 저장

5) 작업중 생성된 Connection, Statement, ResultSet 작업 후 반납

6) 예외처리


DAO를 작성할 때는 분리와 확장을 고려해야 합니다. DAO뿐 아니라 다른 어느 오브젝트를

작성할 때는 분리와 확장을 고려한 설계를 해야합니다.


하나의 기능을 변경시키기 위해 다른 모든 기능에 영향을 줄지 확인하고, 여러 곳에 수정을 해야 한다면 매우 비효율적이다. 

그러므로 분리와 확장을 고려한 설계를 통해 이를 방지할 뿐만 아니라 협업을 쉽게 할 수 있게해주고, 작업을 효과적으로 하도록 해야합니다.


가장 기본적인 방법으로 중복 코드를 제거하는데, 이를 메소드 추출 기법이라 합니다.

DAO가 여러개 있을 때, 중복되는 코드를 최대한 줄인다면 분리와 확장에 용이합니다.


이를 위해 스프링에는 여러 디자인 패턴들이 존재합니다.

디자인 패턴이란, 소프트웨어 설계 시 특정 상황에서 자주 만나는 문제를 해결하기 위해 사용할 수 있는 재사용 가능한 솔루션을 말하며 주로 객체 지향 설계에 관한 것입니다.


예를 들어 3가지 패턴에 대해 설명하겠습니다.


템플릿 메소드 패턴

상속을 통해 슈퍼클래스의 기능을 확장할 때 사용합니다.

변하지 않는 기능은 슈퍼클래스에 만들어두고 자주 변경되며 확장할 기능은 서브클래스에서 만들어 사용합니다. 슈퍼클래스에서 미리 추상 메소드 또는 오버라이드 가능한 메소드를 정의해두고 이를 활용하는 패턴입니다.


* 팩토리 메소드 패턴

상속을 통해 기능을 확장하는 패턴입니다.

슈퍼클래스 코드에서는 서브클래스에서 구현할 메소드를 호출해서 필요한 타입의 오브젝트를 가져와 사용 합니다. 서브클래스에서 구체적인 오브젝트 생성방법을 결정합니다.


* 전략패턴

필요에 따라 변경이 필요한 알고리즘을 인터페이스를 통해 통째로 외부로 분리시키고, 이를 구현한 구체적인 알고리즘 클래스를 필요에 따라 바꿔서 사용할 수 있게 하는 디자인 패턴입니다.



스프링의 기본 개념 및 그 구성 요소 중 하나인 DAO에 대해 정리하였습니다.


또한 디자인 패턴이라는 것에 대해서도 정리했습니다.


다음 포스팅에서는 2번째 요소인 IoC에 대해 정리하겠습니다. 감사합니다.

반응형