Framework & Library/JDBC

[JDBC] DAO 패턴 및 DTO 패턴

gangintheremark 2023. 8. 2. 17:19
728x90

데이터베이스를 연동하는 프로그램을 개발할 때 반드시 사용되는 2가지 개발 패턴이 있다.

 

아래 설명 참고

DAO (Data Access Object) 패턴

DB의 데이터에 접근하기 위한 객체로, 직접 DB에 접근하여 데이터를 조회, 삽입, 수정, 삭제 등 조작할 수 있는 기능을 수행한다.

 

웹 브라우저에서 보여지는 GUI 화면을 구성하는 코드를 presentation logic 이라고 하며 GUI화면에 데이터를 보여주기 위해서 데이터베이스를 검색하는 코드 및 새로 발생된 데이터를 데이터베이스에 저장하는 작업을 처리하는 코드를 business logic 이라고 한다.

두 개의 로직은 하나의 클래스로 모두 구현할 수도 있고 여러 클래스로 모듈화하여 구현할 수도 있지만 하나의 클래스로 구현하면 유지보수가 어려워지기 때문에 바람직하지 않다. 따라서 모듈화시켜 개발하게 되며 모듈화한 클래스들 중에서 데이터베이스 또는 파일 처리하는 코드만을 관리하는 클래스를 작성할 수 있는데 이 클래스 파일DAO 클래스라고 한다. 이렇게 DAO클래스를 사용해서 개발하는 것이 보편적이기 때문에 DAO패턴이라고 한다.


일반적으로 DAO 클래스는 테이블 당 한 개씩 생성해서 사용한다. DAO 클래스 안에는 특정 테이블에서 수행할 작업을 메서드로 정의해서 구현하며 트랜잭션 처리 작업을 구현하기 위하여 일반적으로 Service 라고 하는 클래스까지 구현한다.


DTO (Data Transfer Object) 패턴

계층 간 데이터 교환을 하기 위해 사용하는 객체로, 로직을 가지지 않고  getter & setter 나 toString을 구현하는  클래스이다.

 

여러 클래스로 분리해서 작업은 하지만 서로 간 긴밀한 관계가 유지되며 작업이 이뤄진다. presentation logic에서 보여줄 데이터를 얻기 위해서 business logic에게 요청을 하면 business logic은 데이터베이스에서 검색해서 presentation logic에게 반환하는 작업을 하게된다. 이렇게 데이터를 다른 logic에게 전송 및 반환할 때 효율적으로 데이터를 전송 및 사용할 수 있게하는 클래스 파일을 DTO 클래스라고 한다. 일반적으로 도메인 객체, VO(Value Object)라고도 한다.

 

💡 Service 클래스에서는 데이터베이스와 연결하기 위해 Connection을 얻는 작업을 한다.  이 클래스에서 Connection을 얻는 이유는 트랜잭션을 처리하기 위해서이다.
728x90