TIL#36

DuBu·2023년 7월 27일
0

일본IT JAVA 연수과정

목록 보기
54/61
post-thumbnail

아래를 프로그래밍 하시오.

-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

DAO (Data Access Object): DAO는 데이터베이스와의 상호 작용을 담당하는 객체입니다. 주로 데이터베이스에 접근하여 데이터를 조작하고, CRUD(Create, Read, Update, Delete) 연산을 수행하는 메서드를 포함합니다. DAO는 데이터베이스와의 직접적인 통신을 캡슐화하여 데이터 액세스 로직과 비즈니스 로직을 분리합니다. 이를 통해 데이터베이스 변경 시 DAO만 수정하여 기존의 비즈니스 로직이 영향을 받지 않도록 합니다.

DTO

DTO (Data Transfer Object): DTO는 데이터를 주고받는 객체입니다. 주로 데이터베이스로부터 가져온 데이터를 다른 계층으로 전달하거나, 여러 개의 값을 묶어서 하나의 객체로 표현하여 데이터의 이동을 용이하게 합니다. DTO는 주로 가벼운 구조를 가지고 있으며, setter와 getter 메서드를 통해 데이터에 접근합니다. 주로 비즈니스 로직을 포함하지 않고 순수한 데이터 객체로 사용됩니다.

Connetion

  • Connection은 데이터베이스와의 연결을 나타내는 객체입니다. 데이터베이스에 접근하기 위해서는 먼저 Connection을 설정해야 합니다. 데이터베이스 서버와의 연결을 맺고, SQL 문을 실행하기 위한 Statement 객체를 생성하는 데에 사용됩니다. 데이터베이스 작업이 완료되면 Connection을 닫아 자원을 해제해야 합니다.

Statement

  • Statement는 SQL 문을 실행하는 역할을 담당하는 객체입니다. Connection 객체로부터 생성되며, SQL 문을 데이터베이스 서버에 보내고 실행할 수 있게 해줍니다. 주로 정적인(Static) SQL 문을 실행하는데 사용되며, 매개변수를 전달하기 어렵고 보안상 취약할 수 있습니다.

ResultSet

  • ResultSet은 SQL 문을 실행한 결과로 얻어진 데이터 집합을 나타내는 객체입니다. 즉, 데이터베이스로부터 검색 결과를 담고 있습니다. 주로 SELECT 문을 실행한 후, 그 결과를 받아올 때 사용됩니다. ResultSet을 통해 데이터를 읽고, 원하는 형식으로 가공할 수 있습니다.

Statement객체에 두함수의 용도는?

  • executeQuery() : executeQuery() 함수는 SELECT 문과 같은 질의(Query)를 실행할 때 사용됩니다. 이 함수는 ResultSet 객체를 반환합니다. 즉, SELECT 문의 실행 결과를 ResultSet으로 받아올 수 있습니다. 반환된 ResultSet을 통해 데이터베이스에서 가져온 결과를 읽고 처리할 수 있습니다.
  • executeUpdate() : executeUpdate() 함수는 INSERT, UPDATE, DELETE와 같은 갱신(Update) 작업에 사용됩니다. 이 함수는 정수 값을 반환합니다. 반환된 정수 값은 갱신 작업에 의해 영향을 받은 레코드의 개수를 나타냅니다. INSERT 문을 실행할 때도 새로 추가된 레코드의 개수가 반환됩니다. 이를 통해 작업의 성공 여부를 확인할 수 있습니다.

0개의 댓글