본문 바로가기

dev/Spring

DTO/DAO, ConnectionPool

DTO(Data Transfer Object)

  • 계층(또는 프로세스)간 데이터 전송을 목적으로 하는 객체
  • DB에서 데이터를 얻어 service나 controller 등으로 보낼 때 DTO로 만들어 보낸다.(데이터 -> DTO)
  • 로직이 없는 순수한 데이터 객체이며, getter와 setter 메소드만 가지고 있다.
  • Spring 프레임워크는 프레임워크 단에서 DTO의 getter와 setter를 호출하여 데이터를 클래스화 한다. 즉, 프레임워크가 key & value 형태로 존재하는 데이터를 DTO를 통해 오브젝트로 변환해 준다. 이렇게 변환된 데이터는 오브젝트 이므로 layer간 데이터 전송에 편리하게 사용할 수 있다.
  • VO (Value object) : 값을 표현하기 위해 사용하는 객체로, 불변 클래스다(readOnly 특성을 가진다). 즉, getter 기능만 존재한다. 경우에 따라 Java 개발에서는 DTO랑 혼용되어 사용하기도 한다.

DAO(Data Access Object)

  • 데이터베이스 접근 로직을 가진 객체를 말한다.
  • Persistence Layer에 속하며, Service와 DB를 연결하는 역할을 한다.

ConnectionPool

  • 커넥션 객체들의 집합
  • DB 연결은 자원이 많이 소모되는 작업이다. DB에 접근 할 때 마다 재연결을 하면 비용이 많이 발생한다. 따라서 커넥션 여러개를 미리 만들어 두고, 필요할 때 마다 대여해주는 방식으로 운용하면 보다 효율적으로 DB를 사용할 수 있다.
  • DataSource 객체를 통해 커넥션을 얻어오거나, 반납할 수 있다.


[참조] 

DTO와 VO란? (https://mommoo.tistory.com/61)

[DAO] DAO, DTO, Entity Class의 차이 (https://gmlwjd9405.github.io/2018/12/25/difference-dao-dto-entity.html)

'dev > Spring' 카테고리의 다른 글

spring mvc 프로젝트 구조  (0) 2019.02.19
Spring Layered Architecture  (0) 2019.02.19
Java web MVC  (0) 2019.02.15
AOP  (0) 2019.02.14
IoC/DI  (0) 2019.02.14