본문으로 바로가기

[JAVA] DAO? DTO? VO?

category 프로그래밍/JAVA 2020. 3. 3. 01:18
반응형

***DAO ( Data Access Objedct )

DAO는 Database의 데이터에 접근을 위해 사용하는 객체입니다. 

커넥션 관리가 용이하고, 보안성도 좋다고 합니다.

DAO는 Database를 사용해 데이터를 추가/수정/삭제/조회 등의 기능을 수행합니다.

기본 동작 Flow는 아래와 같습니다.

1. Database와의 연결을 위한 Connection 객체를 생성합니다.
2. Database 정보(url, id, pw 등)로 Database에 연결합니다.
3. preparedstatement에 쿼리문을 만들어 객체에 넣고, 수행을 합니다.
4. Connection을 닫습니다.

Database에 insert하는 예제 소스를 한번 보도록 하겠습니다.

---------------------------------------------------------------------

class TestDao {
   public void insertData (TestDto dto ) throws ClassNotFoundException, SQLException {
      // 사용할 class 등록
      Class.forName("com.mysql.jdbc.Driver");
      // connection 로드
      Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/test", "id", "pw");
      
      // 쿼리문 적용
      PreparedStatement preparedstatement = connection.prepareStatement("insert into test(id, pw) values(?,?)");
      
      // 쿼리문의 values 값 입력
      preparedstatement.setString(1, dto.getId());
      preparedstatement.setString(2, dto.getPw());
      
      // 쿼리문 실행
      preparedstatement.executeUpdate();

      // preparedstatement close
      preparedstatement.close();
      
      // connection close
      connection.close();
   }
}

---------------------------------------------------------------------

 

 

 

 

 


***DTO ( Data Transfer Object ), VO ( Value Object )

DTO는 계층 간의 데이터 교환을 위해 사용하는 객체입니다.

여기서 말하는 계층은 컨트롤러, 뷰, 비지니스 레이어, 퍼시스턴스 레이어를 의미합니다.

DTO는 로직을 따로 가지지는 않고, getter/setter 메소드만을 가지고 있습니다.

VO는 DTO와 비슷한 성격을 지니지만, 읽기전용의 속성을 가집니다.

예제 코드를 한번 보겠습니다.

---------------------------------------------------------------------

class TestDto {
   String id;
   String pw;
   
   public String getId() {
      return id;
   }
   
   public void setId(String id) {
      this.id = id;
   }

   public String getPw() {
      return pw;
   }
   
   public void setPw(String pw) {
      this.pw = pw;
   }
}

---------------------------------------------------------------------

Dto는 심플하게 변수 getter, setter로 구성되어 있습니다.

변수는 선언만 되어 있고, getter/setter로만 값을 가져오고, 변경합니다.

Vo는 예제는 없지만 읽기 전용이라 getter만 존재합니다.

반응형

댓글을 달아 주세요