백문이불여일타

DTO,DAO 차이점 본문

Java

DTO,DAO 차이점

퇴근각 2019. 7. 19. 12:56

 

DTO(Data Transfer Object)

개념

  - 데이터 전달 단위, 객체를 표현하는 단위
  - 보통 테이블의 컬럼들을 멤버변수로 처리한다.
  - 캡슐화된 객체여야 함(멤버변수는 private 으로, public getter/setter 메서드가 필수!!)

 

 

DTO 기본 예제

 

package sec01.ex01;

import java.sql.Date;

public class MemberVO {
/*멤버변수는 private로 지정*/

	private String id;
	private String pwd;
	private String name;
	private String email;
	private Date joinDate;
	
	public MemberVO() {
		System.out.println("MemberVO 생성자 호출");
	}
    
    /*public getter,setter 메서드 생성*/
 
	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

	public String getName() {
		return name;
	}

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


	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Date getJoinDate() {
		return joinDate;
	}

	public void setJoinDate(Date joinDate) {
		this.joinDate = joinDate;
	}
}

 


DAO(Data Access Object)

개념

  Data Access Object 의 약자로 데이터베이스의 data에 접근하기 위한 객체입니다.

  - DAO의 경우는 DB와 연결할 Connection 까지 설정되어 있는 경우가 많습니다.
    그래서 현재 많이 쓰이는 Mybatis 등을 사용할 경우 커넥션풀까지 제공한다
.

  - 데이터베이스 관련 작업을 전담하는 클래스
  - 데이터베이스에 연결하여, 입력 , 수정, 삭제, 조회 등의 작업을 하는 클래스
  - 데이터베이스에 CRUD 작업이 필요하다 

 

 

DAO 예제
package sec01.ex01;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class MemberDAO {
	private static final String driver = "oracle.jdbc.driver.OracleDriver";
	private static final String url = "jdbc:oracle:thin:@localhost:1521:XE";
	private static final String user = "scott";
	private static final String pwd = "tiger";
	private Connection con;
	private Statement stmt;

	public List<MemberVO> listMembers() {
		List<MemberVO> list = new ArrayList<MemberVO>();
		try {
			connDB();
			String query = "select * from t_member ";
			System.out.println(query);
			ResultSet rs = stmt.executeQuery(query);
			while (rs.next()) {
				String id = rs.getString("id");
				String pwd = rs.getString("pwd");
				String name = rs.getString("name");
				String email = rs.getString("email");
				Date joinDate = rs.getDate("joinDate");
				MemberVO vo = new MemberVO();
				vo.setId(id);
				vo.setPwd(pwd);
				vo.setName(name);
				vo.setEmail(email);
				vo.setJoinDate(joinDate);
				list.add(vo);
			}
			rs.close();
			stmt.close();
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;
	}

	private void connDB() {
		try {
			Class.forName(driver);
			System.out.println("Oracle 드라이버 로딩 성공");
			con = DriverManager.getConnection(url, user, pwd);
			System.out.println("Connection 생성 성공");
			stmt = con.createStatement();
			System.out.println("Statement 생성 성공 ");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

 

Comments