DTO = dept Dto 클래스
package edu.globalin.ex.dto; //Name Null? Type //----------------------------------------- -------- --------------- //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) { this.deptno = deptno; this.dname = dname; this.loc = loc; } @Override public String toString() { return "DeptDTO [deptno=" + deptno + ", dname=" + dname + ", 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.globalin.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.globalin.ex.dto.DeptDTO; public class DeptDAO { private String driver = "oracle.jdbc.OracleDriver"; private String url = "jdbc:oracle:thin:@localhost:1521:xe"; private String uid = "scott"; private String upwd = "tiger"; public DeptDAO() { try { // DAO 객체 생성 시 driver를 올림 Class.forName(driver); } catch (Exception e) { e.printStackTrace(); } } public List<DeptDTO> getDeptList(){ Connection conn = null; PreparedStatement pstmt =null; ResultSet rs = null; List<DeptDTO> deptList = new ArrayList<>(); String sql = "select * from dept"; try { conn = DriverManager.getConnection(url, uid, upwd); pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); while(rs.next()) { DeptDTO dept = new DeptDTO(); dept.setDeptno(rs.getInt("deptno")); dept.setDname(rs.getString("dname")); dept.setLoc(rs.getString("loc")); deptList.add(dept); } } catch (Exception e) { System.out.println("connection 에러"); } finally { try { rs.close(); pstmt.close(); conn.close(); } catch (Exception e) { System.out.println("close 에러"); } } return deptList; } }
dept_select.jsp ->dept 테이블에 있는 내용을 전부 유저에게 출력하여
보여주는 페이지
<%@page import="edu.globalin.ex.dto.DeptDTO"%> <%@page import="java.util.List"%> <%@page import="edu.globalin.ex.dao.DeptDAO"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Insert title here</title> </head> <body> <% List<DeptDTO> deptList = dao.getDeptList(); for(DeptDTO d: deptList){ out.print(d + "<br/>"); } %> </body> </html>
Data Access Object로 JDBC를 통해 db와 연결을 직접 수행해주는 객체. 여기다 DB연결성 작업에 대한 programming
Data Transfer Object로 DB에서 받아올 객체를 미리 클래스화 해 객체를 생성해둔 후 데이터를 받아 객체 형태로 주고받는 것
DriverManager 클래스에 있는 connection을 얻어와 db와 connect해 작업을 수행하기 위해 미리 정해둔 interface. db회사에서는 이 interface를 구현해 java쪽에 driver 형태로 제공한다.
sql을 받는 단계. connection 객체 안에 있는 preparedStatement 메소드에 sql문을 매개변수로 넣는다.
sql을 매개변수로 넣을 때 sql 문장 안에 변수가 되는 부분을 ?로 표시한 후에
preparedStatment에 있는 해당하는 타입을 set해준다.
praparedStatment에 있는 executeQuery()를 실행해주면 그게 ResultSet 형태로 반환된다.
row단위로 cursor형태로 return되며 next()method를 실행한 후 해당 row에 값이 있으면 true를 return해주며 커서가 다음 줄로 바뀐다.
없으면 false를 return하기 때문에 while()안에 조건으로 넣으면 값이 없을 때 까지 다음 값을 확인할 수 있다.
conn.prepareStatement(sql);
위와 같이 Statement에 입력된 sql문을 실행하는 역할.
몇개가 update됐는지 해당 개수를 int타입으로 return