본문 바로가기

SERVER/Spring

[WEB] DAO, DTO 개념 및 실습

- JDBC(Java Database Connectivity) : 자바 프로그램 내에서 SQL문을 실행하기 위한 자바 API. (자바를 이용한 데이터베이스 접속과 SQL 문장의 실행, 그리고 실행 결과로 얻어진 데이터의 핸들링을 제공하는 방법에 대한 규약)

 

JDBC 클래스 생성단계:

  1. DriverManager를 통해 Connection 객체를 얻는다.
  2. Connection을 통해 Statement를 얻는다.
  3. Statement를 통해 ResultSet을 얻는다.
  4. 질의 수행 & 결과 받은 후 객체를 생성 반대순서로 Close한다.

- DAO(Data Access Object) : DAO, 말그대로 데이터베이스에 접근하기 위한 객체. DAO 구현을 통해 서비스 로직 부분과 DB에 접근하는 로직을 분리하여 작성할 수 있다. DB에 접근하기 위해 발생하는 connection 객체의 생성과 오버헤드를 보다 효율적으로 해결, 관리하기 위해 DB에 접속하는 전용 객체를 만들고, 모든 페이지는 이 객체를 호출해서 사용한다. CRUD 인터페이스를 작성하는 데이터 조작(DML)을 처리하는 역할이다.

 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import package.Role;

public class RoleDao {
	private static String dburl = "jdbc:mysql://localhost:3306/dbname";
	private static String dbUser = "username";
	private static String dbpasswd = "userpassword";

	public int addRole(Role role) {
		int insertCount = 0;

		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		String sql = "INSERT INTO role (role_id, description) VALUES ( ?, ? )";

		try (Connection con = DriverManager.getConnection(dburl, dbUser, dbpasswd);
				PreparedStatement ps = con.prepareStatement(sql)) {

			ps.setInt(1, role.getRoleId());
			ps.setString(2, role.getDescription());

			insertCount = ps.executeUpdate();

		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return insertCount;
	}
}

-부스트코스 웹 풀스택 강의 코드

 

- DTO(Data Transfer Object) : 별다른 로직을 갖고 있지않은 순수한 데이터 객체로서 계층 간 데이터 교환을 위한 객체. 순수한 데이터 객체로서 속성과 그 속성에 접근하기 위한 getter, setter 메소드만 가진 클래스이다.

 

package kr.or.connect.jdbcexam.dto;

public class Role {
	private Integer roleId;
	private String description;

	public Role() {

	}

	public Role(Integer roleId, String description) {
		super();
		this.roleId = roleId;
		this.description = description;
	}

	public Integer getRoleId() {
		return roleId;
	}

	public void setRoleId(Integer roleId) {
		this.roleId = roleId;
	}

	public String getDescription() {
		return description;
	}

	public void setDescription(String description) {
		this.description = description;
	}

	@Override
	public String toString() {
		return "Role [roleId=" + roleId + ", description=" + description + "]";
	}
}

-부스트코스 웹 풀스택 강의 코드

'SERVER > Spring' 카테고리의 다른 글

[Spring] Component와 @ComponentScan  (0) 2021.09.14
[Spring] Bean Scope의 종류  (0) 2021.09.12
[Spring] Bean Life Cycle(생명주기)  (0) 2021.09.11
[Spring] 스프링에서 의존성을 주입하는 방법  (0) 2021.09.10
[Spring] IoC와 DI  (0) 2021.09.09