DTO : Data Transfer Object

김태홍·2023년 7월 28일

자바

목록 보기
1/3
post-thumbnail

DTO란 무엇인가?

DTO : Data Transfer Object의 약자로 자료 전달용 객체이다.

데이터를 담는 바구니라 생각하면 쉽다!

프로젝트를 할 때 DTO클래스를 먼저 생성하고 DAO클래스를 생성한다.

	public class Make_DTO {
		private String prodNo;   //상품 번호
		private String prodName; //상품 이름
		private int prodPrice;   //상품 가격
* private으로 선언한 이유
* DTO클래스의 멤버변수에 직접적으로 참조할 수 없게 만들기 위함이다.
* 다른 사용자들이 직접 참조하게 되면 값이 변질될 수 있음으로 private으로 선언한것이다.
	public Make_DTO() {}
* 디폴트 생성자 자바 컴파일러가 생성자가 없다면 자동으로 생성해준다.
* 자동으로 생성해주지만 직접 작성해주는것이 좋다.
public Make_DTO(String prodNo, String prodName) {
		//this.prodNo = prodNo;
		//this.prodName = prodName;
		
		this(prodNo, prodName,0);
	}
* this() 생성자 호출 생성자 안에서 매개변수가 다른 생성자를 호출해줄 수 있다.
* 두줄짜리 코드를 좀 더 간결하게 표현할 수 있다.
public Make_DTO(String prodNo, String prodName, int prodPrice) {
		this.prodNo = prodNo;
		this.prodName = prodName;
		this.prodPrice = prodPrice;
	}
* 생성자 오버로드
* 같은 이름의 생성자를 생성하되 매개변수의 개수나 자료형을 달리하여 여러개를 생성할 수 있다.
* 메소드 오버로딩을 사용하여 여러가지 경우의 클래스 속성값을 초기화 해줄 수 있다.

* 생성자로도 멤버변수를 초기화해줄 수 있고
* setter 메서드로도 멤버변수를 초기화해줄 수 있는데 왜 둘다 사용할까?
* 이유 : 사용자가 멤버변수를 중간에 값을 변경할 때 setter 메서드를 이용해 편리하게 사용할 수 있음으로

```
//ProdNo setter 메서드 작성
public void setProdNo(String prodNo) {
	//상품 번호의 길이가 반드시 5자리를 맞춰야 하는 조건을 주었다.
	if(prodNo.length() != 5) {
		System.out.println("상품번호는 5자리어야 합니다.");
		return;
		//return을 통해 실행흐름을 다시 사용한 곳에 넘깁니다.
	}
	this.prodNo = prodNo;
	//조건에 부합한다면 생성한 객체의 HEAP메모리 영역에 prodNo에 값을 넣습니다.
}

//setter 메서드를 사용하는 이유는 무엇일까?
//setter 메서드를 사용하는 이유는 멤버변수의 값을 초기화해줄때 조건을 주어
//해당 값의 범위를 초과하지 않는다는 안정성을 확보할 수 있다.
//또한 멤버변수가 private으로 선언되어 있기에 setter메서드를 통해서만 멤버변수의 값을
//변경시킬 수 있음으로 더욱이 안정성이 확보된다.
```

```
public String getProdNo() {
	return prodNo;
}
//멤버변수의 접근제어 지시자가 private임으로 public getter 메서드를 통해 값을 넘겨준다.

public void setProdName(String prodName)
{
	this.prodName = prodName;
}

public String getProdName() {
	return prodName;
}

public void setProdPrice(int prodPrice) {
	this.prodPrice = prodPrice;
}

public int getProdPrice() {
	return prodPrice;
}
```
profile
나의 뜨거운 열정과 자신감

0개의 댓글