
VO | DAO | DTO 란? (+feat. getter(), setter() )
헤이베이지 HeyBeige
·2021. 3. 1. 15:49
VO(Value Object)
데이터 저장을 담당하는 클래스. VO는 값을 위해 쓰이는 객체로 불변(read only)의 속성을 가진다.
보통 getter의 기능만 포함한다
DAO(Data Access Object)
데이터베이스의 data에 접근하기 위한 객체
DAO의 경우 DB와 연결할 Connection 까지 설정되는 경우가 많다.
DB를 사용해 데이터를 CRUD하는 기능을 전담한다
-데이터 사용기능 담당 클래스
DTO(Data Transfer Object)
계층간 데이터 교환을 위한 자바빈즈
여기서 계층의 의미는 Controller, View,Business Layer, Persistent Layer등을 말하며 각 계층간 데이터 교환
을 위한 객체를 의미한다.
DTO는 로직을 가지지 않은 순수한 데이터 객체이고 getter,setter 메소드만 가진 클래스를 의미한다
-가변의 성격을 가진다
#Service 와 DAO의 차이?
DAO를 여러개 묶어서 사용할때 'Service'라고 부른다.
#Setter <제한성>
public class GenieMusicVO {
private int no
private String title,singer
public int getNo() {
return no;
}
public void setNo(int no) {
if(no >= 0){
this.no = no;
}
else
this.no=0;
}
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSinger() {
return singer;
}
public void setSinger(String singer) {
this.singer = singer;
}
|
cs |
-변수명들은 private 로 외부 클래스들의 접근을 막아 놓고 getter() 와 setter() 메소드를 이용하여 객체의 값을 지정하거나 가져올 수 있다.
만약
GenieMusicVO a= new GenieMusicVO();
a.no = 1;
로 또한 값을 바로 대입할수 있지만 값을 제한하는 상황에선 무방비하다.
위처럼 값이 대입되기 전에
접근제한자가 없는 것은 막고, 값은 메소드 내에서 처리한후 대입이 되도록 할 때사용된다.
#Getter <은닉성>
public class GenieMusicVO {
private int no,cno,idcrement;
private String title,singer,album,poster,state;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSinger() {
return singer;
}
public String getAlbum() {
return album;
}
|
cs |
8개의 변수중 외부에 노출되는 정보를 제한하고 title,singer,album 변수 정보만 가져올 수 있도록 getter()를 이용하여 지정한다. 이로써, 변수들의 외부 노출을 제한하고, 노출 범위를 정해주는 것이 Getter고, 그러한 속성이 은닉성이다.
참고 블로그:[JAVA] DAO, DTO, VO 차이 (tistory.com)
DAO vs DTO vs VO vs BO 차이 · MOONGCHI (berrrrr.github.io)
OOP / Getter랑 Setter를 왜 써야해?? (tistory.com)