-DTO = dept Dto 클래스
package edu.global.ex.dto;
//DEPTNO NOT NULL NUMBER(2)
//DNAME VARCHAR2(14)
//LOC VARCHAR2(13)
public class DeptDto {
private int deptno;
private String dname;
private String loc;
public DeptDto() {}
public DeptDto(int deptno, String dname, String loc) {
super();
this.deptno = deptno;
this.dname = dname;
this.loc = loc;
}
public int getDeptno() {
return deptno;
}
public void setDeptno(int deptno) {
this.deptno = deptno;
}
public String getDname() {
return dname;
}
public void setDname(String dname) {
this.dname = dname;
}
public String getLoc() {
return loc;
}
public void setLoc(String loc) {
this.loc = loc;
}
}
-DAO = dept Dao 클래스
package edu.global.ex.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import edu.global.ex.dto.DeptDto;
public class DeptDao {
private String driver = "oracle.jdbc.driver.OracleDriver";
// 오라클을 사용하므로 oracle드라이버를 넣어서 초기화
private String url = "jdbc:oracle:thin:@localhost:1521:xe";
private String uid = "scott";
private String upw = "tiger";
// DB에 접근하기 위해 id와 pw를 입력한다.
public DeptDao() {
try {
Class.forName(driver);
} catch (Exception e) {
e.printStackTrace();
}
}
public List<DeptDto> getDepts() {
// 테이블을 가져올때 Dto는 한 행을 객체로 보고 한 줄을 그대로 가져온다.
ArrayList<DeptDto> dtos = new ArrayList<DeptDto>();
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
String query = "select * from dept";
con = DriverManager.getConnection(url, uid, upw);
stmt = con.prepareStatement(query);
rs = stmt.executeQuery();
while (rs.next()) {
int deptno = rs.getInt("deptno");
String dname = rs.getString("dname");
String loc = rs.getString("loc");
DeptDto dto = new DeptDto(deptno, dname, loc);
dtos.add(dto);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (con != null) {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return dtos;
}
}
dept_select.jsp ->dept 테이블에 있는 내용을 전부 유저에게 출력하여
보여주는 페이지
<%@page import="edu.global.ex.dto.DeptDto"%>
<%@page import="java.util.List"%>
<%@page import="edu.global.ex.dao.DeptDao"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
DeptDao dao = new DeptDao();
List<DeptDto> dtos = dao.getDepts();
for(DeptDto dto: dtos){
out.print("부서번호 : " + dto.getDeptno() +
" 직종이름 : " + dto.getDname() +
" 지역 : " + dto.getLoc() + "<br>");
}
%>
</body>
</html>
DAO (Data Access Object)
: DAO는 데이터베이스와의 상호 작용을 담당하는 객체입니다. 주로 데이터베이스에 접근하여 데이터를 조작하고, CRUD(Create, Read, Update, Delete) 연산을 수행하는 메서드를 포함합니다. DAO는 데이터베이스와의 직접적인 통신을 캡슐화하여 데이터 액세스 로직과 비즈니스 로직을 분리합니다. 이를 통해 데이터베이스 변경 시 DAO만 수정하여 기존의 비즈니스 로직이 영향을 받지 않도록 합니다.
DTO (Data Transfer Object)
: DTO는 데이터를 주고받는 객체입니다. 주로 데이터베이스로부터 가져온 데이터를 다른 계층으로 전달하거나, 여러 개의 값을 묶어서 하나의 객체로 표현하여 데이터의 이동을 용이하게 합니다. DTO는 주로 가벼운 구조를 가지고 있으며, setter와 getter 메서드를 통해 데이터에 접근합니다. 주로 비즈니스 로직을 포함하지 않고 순수한 데이터 객체로 사용됩니다.
executeQuery()
: executeQuery() 함수는 SELECT 문과 같은 질의(Query)를 실행할 때 사용됩니다. 이 함수는 ResultSet 객체를 반환합니다. 즉, SELECT 문의 실행 결과를 ResultSet으로 받아올 수 있습니다. 반환된 ResultSet을 통해 데이터베이스에서 가져온 결과를 읽고 처리할 수 있습니다.executeUpdate()
: executeUpdate() 함수는 INSERT, UPDATE, DELETE와 같은 갱신(Update) 작업에 사용됩니다. 이 함수는 정수 값을 반환합니다. 반환된 정수 값은 갱신 작업에 의해 영향을 받은 레코드의 개수를 나타냅니다. INSERT 문을 실행할 때도 새로 추가된 레코드의 개수가 반환됩니다. 이를 통해 작업의 성공 여부를 확인할 수 있습니다.