DTO: Data Transfer Object
DAO: Data Access Object
DAO와 DTO는 둘 다 데이터베이스와 연관된 기능을 수행하는 객체이지만, 각각의 역할과 목적이
다르다.
DAO는 데이터베이스와 연결을 관리하고, 데이터베이스에서 데이터를 가져오거나 데이터를 저장하는 등의 역할을 수행한다. 즉, DAO는 데이터베이스와의 연결과 데이터베이스 조작을 캡슐화하는 객체이다.
"조작을 캡슐화한다"는 말은, 데이터베이스와의 조작을 한 곳에 모아서 캡슐화하는 것을 의미. 이것은 다시 말해, 데이터베이스와의 연결을 추상화하고, 데이터베이스에서 데이터를 가져오는 방법과 저장하는 방법을 명확하게 구분하는 것.
예를 들어, DAO를 사용하지 않고 직접 데이터베이스와 연결하여 SQL 쿼리를 작성하고 데이터를 가져오는 코드를 작성한다면, 코드가 복잡해지고 유지보수가 어려워지는데, 이 때, DAO를 사용하면 데이터베이스 연결과 SQL 쿼리 작성 등을 한 곳에서 캡슐화하므로, 코드가 간결해지고 유지보수가 쉬워진다.
반면, DTO는 데이터를 전송하는데 사용되는 객체로, 데이터베이스나 외부 시스템에서 가져온 데이터를 비즈니스 로직에서 사용하기 쉽게 변환해주는 역할을 한다. DTO는 데이터를 전송하는 과정에서 데이터를 캡슐화하고, 비즈니스 로직과 데이터베이스 간의 데이터 교환을 단순화한다.
따라서 DAO와 DTO는 각각의 역할과 목적이 다르다. DAO는 데이터베이스와의 연결과 데이터베이스 조작을 캡슐화하며, DTO는 데이터 전송을 캡슐화한다. DAO와 DTO는 데이터베이스와 연동하는 기능을 구현하는 데 사용되는 객체이지만, 다른 방식으로 된다.
사용자가 로그인을 시도하면 클라이언트는 사용자가 입력한 정보를 서버로 전송하고, 서버는 해당 정보를 검증하여 로그인 결과를 클라이언트로 전송한다. 이때 DTO는 클라이언트와 서버 간의 데이터 전송을 캡슐화하는 데 사용된다.
또한, DTO는 서버 사이드에서도 사용될 수 있다. 예를 들어, 서버 사이드에서 데이터베이스에서 가져온 정보를 DTO로 변환하여 비즈니스 로직으로 전달할 수 있다. 이를 통해 비즈니스 로직에서 데이터베이스와의 결합도를 낮추고, 데이터 전송 시 데이터의 무결성을 보장할 수 있다.
DAO로 데이터베이스 연결을 한다면, 일반적으로 최초 1회에 한해 연결이 수행된다. 이후 DAO 객체를 재사용하면 이미 연결된 데이터베이스와 계속해서 작업할 수 있다.
하지만, 연결된 데이터베이스와 일정 시간 이상 연결이 유지되지 않으면 연결이 끊어지는 경우도 있다. 이 경우 DAO 객체를 다시 사용하기 전에 데이터베이스와 연결을 다시 수행해야 한다.
DAO는 데이터베이스와 연결하여 데이터를 조작하는 기능을 담당한다. 이를 통해 비즈니스 로직에서 데이터베이스와의 결합도를 낮추고, 코드의 재사용성과 유지보수성을 높일 수 있다.
DAO로 데이터베이스를 조작하는 방법은 다양하다. 보통 "JDBC(Java Database Connectivity) API"를 사용하여 데이터베이스와의 연결 및 데이터 조작을 수행한다.
JDBC는 Java에서 데이터베이스와의 연결을 위한 표준 API로, 다양한 데이터베이스와 호환된다.
DAO에서는 JDBC API를 사용하여 SQL문을 작성하고, 이를 데이터베이스에 전달하여 데이터를 조작한다. SQL문은 SELECT, INSERT, UPDATE, DELETE 등의 다양한 종류가 있으며, 데이터베이스와 상황에 따라 적절한 SQL문을 사용하여 데이터를 처리한다.
또한, DAO에서는 JDBC API를 사용하여 데이터베이스 연결 및 연결 해제, 데이터 삽입, 수정, 삭제 등의 기능을 수행한다. 이러한 기능을 캡슐화하여 비즈니스 로직에서는 DAO의 메서드를 호출함으로써 데이터베이스 조작을 수행할 수 있다.
따라서, DAO는 JDBC API를 사용하여 데이터베이스와 연결하고, SQL문을 작성하여 데이터를 조작하고. 이를 통해 데이터베이스와 비즈니스 로직 간의 결합도를 낮추고, 코드의 재사용성과 유지보수성을 높일 수 있는 친구다.
'스프링부트' 카테고리의 다른 글
데이터 전송을 위한 DTO(Data Transfer Object) 이해하기 (0) | 2023.04.13 |
---|---|
데이터베이스 조작을 위한 DAO(Data Access Object) 이해하기 (0) | 2023.04.13 |
What is Spring Boot? (0) | 2023.04.13 |
데이터베이스 조회 및 조작 제네릭타입 (0) | 2023.04.13 |
파일 이름 유효한지 확인하고, 파일에서 숫자를 로드하는 방법 (0) | 2023.04.13 |