DAO란?

DAO(Data Access Object)는 데이터베이스를 사용해 데이터를 조회하거나 조작하는 기능을 전담하는 객체를 말한다.

데이터베이스에 대한 접근을 DAO만 하게되면 다수의 데이터베이스 호출 문제를 해결할 수 있다는 장점이 있다.

말로는 잘 이해가 되지 않으니 코드로 접근해보면 아래와 같다.

public class DAO{
	public void addData(DTO dto){
		//Connection with DB and add Data
	}
	public void deleteData(DTO dto){
		//Connection with DB and delete Data
	}
}

DTO란?

DTO(Data Transfer Object)는 계층 간의 데이터 교환을 위한 객체이다.
따로 로직을 가지지 않는 순수한 데이터 객체이다. 즉, Getter Setter를 주로 가지고 있다.

이또한 말로는 이해하기 난해하기 때문에 코드로 접근해보면 아래와 같다.

public class DTO{
	private String name;
	private int value;
	private String data;

	public String getName(){
		return name;
	}

	public String setName(String name){
		this.name = name;
	}

	...
}

DTO는 VO(Value Object)와 혼동되어 사용되기도 하는데, 비슷한 개념이긴 하지만 변수에 대한 변경이 가능한 DTO와는 달리 VO는 읽기만 가능하다는 차이점이 있다.

코드를 통해 VO의 예시를 보면 아래와 같다.

public class Color{
	static int RED = 0x#FF0000;

	public int getRed(){
		return RED;
	}
}

public class Main{
	public static void main(String args[]){
		int nRedColorCode = Color.getRed();
		int nRedColorCod2 = Color.RED;
	}
}