Data Scientist 옌

매일 발전하는 IT문제해결사

국비지원교육 (22.01-22.07)/강의노트

22-03-11(금) 030일차 [Java, Oracle] DAO 패턴

옌炎 2022. 5. 10. 22:48
728x90

수업내용


1교시 (09:30-10:20)

  • 지난 시간 복습
    2-tier
    ----------
    서버 & 클라이언트

    3-tier
    -------------
    프레젠테이션 레이어
    비즈니스 레이어
    데이터베이스 레이어

    프리젠테이션 레이어 : 화면, 콘트롤러
    비즈니스 레이어 : 서비스, 다오
    데이터베이스 레이어 : sql

    =======================
    화면 - 서비스 - 다오 - sql
    =======================

2교시 (10:30-11:20)

  • 프로그램 만들기
    EMP 테이블 검색하기
    ------------------------
    1. 전체 검색
    2. 사번 검색
    ----------------
    3. 이름 검색
    4. 사번, 이름 검색
    5. 직책 검색
    6. 날짜 검색

    1. 데이터베이스 문서 만들기
    2. 클래스 설계 하기

    프로그램 만드는 순서
    ---------------------
    1. 커넥션 클래스 만들기
    2. VO 클래스 만들기
    3. Service 클래스 만들기
       껍데기 먼저 만들기
    4. DAO 클래스 만들기
       껍데기 먼저 만들기
    5. sql 클래스 만들기
       껍데기 먼저 만들기
    6. 쿼리문 만들기 : SQLDeveloper
       쿼리문 완성
    7. sql 클래스 완성
    8. DAOImpl 클래스
       해당하는 전체검색 함수 완성하기
    9. ServiceImpl 클래스
       DAO에서 함수 호출하기
       Service와 DAO 연결하기

    -- 데이터를 만든다.
    사원번호 EMPNO NUMBER
    사원이름 ENAME VARCHAR2
    사원직책 JOB VARCHAR2
    상관사원번호 MGR VARCHAR2
    입사일 HIREDATE DATE
    급여 SAL NUMBER
    수당 COMM NUMBER
    부서번호 DEPTNO NUMBER

    변수는 데이터베이스 컬럼명을 소문자로 만든다.
    private String empno;
    private String ename;
    private String job;
    private String mgr;
    private String hirdate;
    private String sal;
    private String comm;
    private String deptno;

    -- 클래스를 구성한다.
    화면
       EmpSearchScr.java
    서비스
       EmpSearchService.java 인터페이스
       EmpSerachSeriveceImpl.java 클래스
    다오
       EmpSerachDAO.java 인터페이스
       EmpSerachDAOImpl.java 클래스
    sql
       EmpSearchQueryMap.java 추상클래스
    vo
       EmpSearchVO.java
    common
       OracleConnProperty.java 추상클래스

    패키지
    a.b.c.emp.search

    클래스

    화면
    a.b.c.emp.search.scr
       EmpSearchScr
          public ArrayList<EmpSearchVO> empSelectAll();
          public ArrayList<EmpSearchVO> empSelectEmpno();
          public ArrayList<EmpSearchVO> empSelectEname();
          public ArrayList<EmpSearchVO> empSelectEmpnoEname();
          public ArrayList<EmpSearchVO> empSelectJob();
          public ArrayList<EmpSearchVO> empSelectHiredate();
    서비스
    a.b.c.emp.search.service
       EmpSearchService
          public ArrayList<EmpSearchVO> empSelectAll();
          public ArrayList<EmpSearchVO> empSelectEmpno(EmpSearchVO evo);
          public ArrayList<EmpSearchVO> empSelectEname(EmpSearchVO evo);
          public ArrayList<EmpSearchVO> empSelectEmpnoEname(EmpSearchVO evo);
          public ArrayList<EmpSearchVO> empSelectJob(EmpSearchVO evo);
          public ArrayList<EmpSearchVO> empSelectHiredate(EmpSearchVO evo);
       EmpSearchServiceImpl
    다오
    a.b.c.emp.search.dao
       EmpSearchDAO
          public ArrayList<EmpSearchVO> empSelectAll();
          public ArrayList<EmpSearchVO> empSelectEmpno(EmpSearchVO evo);
          public ArrayList<EmpSearchVO> empSelectEname(EmpSearchVO evo);
          public ArrayList<EmpSearchVO> empSelectEmpnoEname(EmpSearchVO evo);
          public ArrayList<EmpSearchVO> empSelectJob(EmpSearchVO evo);
          public ArrayList<EmpSearchVO> empSelectHiredate(EmpSearchVO evo);
       EmpSearchDAOImpl
    sql
    a.b.c.emp.search.sql
       EmpSearchQueryMap
          public static String getEmpSelectAll();
          public static String getEmpSelectEmpno();
          public static String getEmpSelectEname();
          public static String getEmpSelectEmpnoEname();
          public static String getEmpSelectJob();
          public static String getEmpSelectHiredate();
    vo
    a.b.c.emp.search.vo
       EmpSearchVO
          private String empno;
          private String ename;
          private String job;
          private String mgr;
          private String hiredate;
          private String sal;
          private String comm;
          private String deptno;
          // 날짜 검색 변수 추가
          private String fromdate;
          private String todate;

    공통 클래스
    a.b.c.common
       OracleConnProperty

3교시 (11:30-12:20)

  • DAO 패턴 (1번만 구현)
    • OracleConnProperty
    • EmpSearchVO
    • EmpSearchService
    • EmpSerachDAO

4교시 (12:30-13:20)

  • DAO 패턴 (1번만 구현)
    • EmpSearchQueryMap
    • EmpSearchServiceImpl
    • EmpSearchDAOImpl
    • EmpSearchScr

5교시 (14:30-15:20)

  • DAO 패턴 (2~6번 구현해보기)
  • OracleConnProperty
package a.b.c.common;

import java.sql.Connection;
import java.sql.DriverManager;

public abstract class OracleConnProperty {

	// DataSource 정보 : 데이터베이스 연결 정보
	public static final String JDBC_DRIVER = "oracle.jdbc.driver.OracleDriver";
	public static final String JDBC_URL = "jdbc:oracle:thin:@localhost:1521:orclKSY00";
	public static final String JDBC_USER = "scott";
	public static final String JDBC_PASSWORD = "tiger";

	// Connection 연결하는 함수 만들기
	public static Connection getConnection() {
		
		Connection conn = null;
		
		try {
			Class.forName(JDBC_DRIVER);
			conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);
			
		} catch (Exception e) {
			System.out.println("데이터베이스 연결에 문제가 있어요" + e.getMessage());
		}
	
		return conn;
	}
}
  • EmpSearchVO
package a.b.c.emp.search.vo;

// 자바 Beans 컴포넌트 개념(Setter, getter 함수 사용) : 데이터를 담는 역할
// DTO: Data Transfer Object 패턴 : 데이터를 나르는 역할 <-- 이전 용어
// 현재는 밸류 오브젝트라고 사용한다.
// VO : Value Object : 데이터를 담는 통 역할을 한다. : 깡통 클래스
public class EmpSearchVO {
	
	private String empno;
	private String ename;
	private String job;
	private String mgr;
	private String hiredate;
	private String sal;
	private String comm;
	private String deptno;
	private String fromdate;
	private String todate;
	
	// 생성자
	public EmpSearchVO() {
		
	}

	public EmpSearchVO(String empno, String ename, String job, String mgr, 
					   String hiredate, String sal, String comm, String deptno,
					   String fromdate, String todate) {
		this.empno = empno;
		this.ename = ename;
		this.job = job;
		this.mgr = mgr;
		this.hiredate = hiredate;
		this.sal = sal;
		this.comm = comm;
		this.deptno = deptno;
		this.fromdate = fromdate;
		this.todate = todate;
	}
	
	// getters
	public String getEmpno() {
		return empno;
	}
	public String getEname() {
		return ename;
	}
	public String getJob() {
		return job;
	}
	public String getMgr() {
		return mgr;
	}
	public String getHiredate() {
		return hiredate;
	}
	public String getSal() {
		return sal;
	}
	public String getComm() {
		return comm;
	}
	public String getDeptno() {
		return deptno;
	}
	public String getFromdate() {
		return fromdate;
	}
	public String getTodate() {
		return todate;
	}
	
	// setters
	public void setEmpno(String empno) {
		this.empno = empno;
	}
	public void setEname(String ename) {
		this.ename = ename;
	}
	public void setJob(String job) {
		this.job = job;
	}
	public void setMgr(String mgr) {
		this.mgr = mgr;
	}
	public void setHiredate(String hiredate) {
		this.hiredate = hiredate;
	}
	public void setSal(String sal) {
		this.sal = sal;
	}
	public void setComm(String comm) {
		this.comm = comm;
	}
	public void setDeptno(String deptno) {
		this.deptno = deptno;
	}
	public void setFromdate(String fromdate) {
		this.fromdate = fromdate;
	}
	public void setTodate(String todate) {
		this.todate = todate;
	}
}

6교시 (15:30-16:20)

  • DAO 패턴 (2~6번 구현해보기)
  • EmpSearchService
package a.b.c.emp.search.service;

import java.util.ArrayList;

import a.b.c.emp.search.vo.EmpSearchVO;

public interface EmpSearchService {
	
	// 전체 검색
	public ArrayList<EmpSearchVO> empSelectAll();
	
	// 사번 검색
	public ArrayList<EmpSearchVO> empSelectEmpno(EmpSearchVO evo);

	// 이름 검색
	public ArrayList<EmpSearchVO> empSelectEname(EmpSearchVO evo);
	
	// 사번, 이름 검색
	public ArrayList<EmpSearchVO> empSelectEmpnoEname(EmpSearchVO evo);
	
	// 직책 검색
	public ArrayList<EmpSearchVO> empSelectJob(EmpSearchVO evo);
	
	// 날짜 검색
	public ArrayList<EmpSearchVO> empSelectHiredate(EmpSearchVO evo);
}
  • EmpSerachDAO
package a.b.c.emp.search.dao;

import java.util.ArrayList;

import a.b.c.emp.search.vo.EmpSearchVO;

public interface EmpSearchDAO {

	// 전체 검색
	public ArrayList<EmpSearchVO> empSelectAll();
	
	// 사번 검색
	public ArrayList<EmpSearchVO> empSelectEmpno(EmpSearchVO evo);

	// 이름 검색 
	public ArrayList<EmpSearchVO> empSelectEname(EmpSearchVO evo);
	
	// 사번, 이름 검색
	public ArrayList<EmpSearchVO> empSelectEmpnoEname(EmpSearchVO evo);
	
	// 직책 검색
	public ArrayList<EmpSearchVO> empSelectJob(EmpSearchVO evo);
	
	// 날짜 검색
	public ArrayList<EmpSearchVO> empSelectHiredate(EmpSearchVO evo);
}

7교시 (16:30-17:20)

  • DAO 패턴 (2~6번 구현해보기)
  • EmpSearchQueryMap
package a.b.c.emp.search.sql;

import java.util.ArrayList;

public abstract class EmpSearchQueryMap {

	// 전체 검색
	public static String getEmpSelectAll() {
		
		StringBuffer sb = new StringBuffer();
		sb.append("SELECT						\n");
		sb.append("	 	 A.EMPNO     AS EMPNO	\n");
		sb.append("		,A.ENAME     AS ENAME	\n");
		sb.append("		,A.JOB       AS JOB		\n");
		sb.append("		,A.MGR       AS MGR		\n");
		sb.append("		,TO_CHAR(A.HIREDATE, 'YYYY-MM-DD')  AS HIREDATE	\n");
		sb.append("		,A.SAL       AS SAL		\n");
		sb.append("		,A.COMM      AS COMM	\n");
		sb.append("		,A.DEPTNO    AS DEPTNO	\n");
		sb.append("FROM    EMP A				\n");
		sb.append("ORDER BY 1 DESC				\n");
		
		return sb.toString();
	}
	
	// 사번 검색
	public static String getEmpSelectEmpno() {
		
		StringBuffer sb = new StringBuffer();
		sb.append("SELECT  						\n");
		sb.append("		 A.EMPNO     AS EMPNO	\n");
		sb.append("		,A.ENAME     AS ENAME	\n");
		sb.append("		,A.JOB       AS JOB		\n");
		sb.append("		,TO_CHAR(A.HIREDATE, 'YYYY-MM-DD')  AS HIREDATE	\n");
		sb.append("		,A.DEPTNO    AS DEPTNO	\n");
		sb.append("FROM    EMP A				\n");
		sb.append("WHERE A.EMPNO = ?			\n"); // place holder 1
		
		return sb.toString();
	}
	
	// 이름 검색
	public static String getEmpSelectEname() {
		
		StringBuffer sb = new StringBuffer();
		sb.append("SELECT  						\n");
		sb.append("		 A.EMPNO     AS EMPNO	\n");
		sb.append("		,A.ENAME     AS ENAME	\n");
		sb.append("		,A.JOB       AS JOB		\n");
		sb.append("		,TO_CHAR(A.HIREDATE, 'YYYY-MM-DD')  AS HIREDATE	\n");
		sb.append("		,A.DEPTNO    AS DEPTNO	\n");
		sb.append("FROM    EMP A				\n");
		sb.append("WHERE A.ENAME = ?			\n"); // place holder 1
		
		return sb.toString();
	}
	
	// 사번, 이름 검색
	public static String getEmpSelectEmpnoEname() {
		
		StringBuffer sb = new StringBuffer();
		sb.append("SELECT  						\n");
		sb.append("		 A.EMPNO     AS EMPNO	\n");
		sb.append("		,A.ENAME     AS ENAME	\n");
		sb.append("		,A.JOB       AS JOB		\n");
		sb.append("		,TO_CHAR(A.HIREDATE, 'YYYY-MM-DD')  AS HIREDATE	\n");
		sb.append("		,A.DEPTNO    AS DEPTNO	\n");
		sb.append("FROM    EMP A				\n");
		sb.append("WHERE A.EMPNO = ?			\n"); // place holder 1
		sb.append("AND A.ENAME = ?				\n"); // place holder 2
		
		return sb.toString();
	}
	
	// 직책 검색
	public static String getEmpSelectJob() {
		
		StringBuffer sb = new StringBuffer();
		sb.append("SELECT  						\n");
		sb.append("		 A.EMPNO     AS EMPNO	\n");
		sb.append("		,A.ENAME     AS ENAME	\n");
		sb.append("		,A.JOB       AS JOB		\n");
		sb.append("		,TO_CHAR(A.HIREDATE, 'YYYY-MM-DD')  AS HIREDATE	\n");
		sb.append("		,A.DEPTNO    AS DEPTNO	\n");
		sb.append("FROM    EMP A				\n");
		sb.append("WHERE A.JOB = ?				\n"); // place holder 1
		
		return sb.toString();
	}
	
	// 날짜 검색
	public static String getEmpSelectHiredate() {
		
		StringBuffer sb = new StringBuffer();
		sb.append("SELECT  						\n");
		sb.append("		 A.EMPNO     AS EMPNO	\n");
		sb.append("		,A.ENAME     AS ENAME	\n");
		sb.append("		,A.JOB       AS JOB		\n");
		sb.append("		,TO_CHAR(A.HIREDATE, 'YYYY-MM-DD')  AS HIREDATE	\n");
		sb.append("		,A.DEPTNO    AS DEPTNO	\n");
		sb.append("FROM    EMP A				\n");
		sb.append("WHERE A.HIREDATE BETWEEN ? AND ?		\n"); // place holder 1, 2

		return sb.toString();
	}
}
  • EmpSearchDAOImpl
package a.b.c.emp.search.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import a.b.c.common.OracleConnProperty;
import a.b.c.emp.search.sql.EmpSearchQueryMap;
import a.b.c.emp.search.vo.EmpSearchVO;

public class EmpSearchDAOImpl implements EmpSearchDAO {

	// 전체 검색
	@Override
	public ArrayList<EmpSearchVO> empSelectAll() {
		// TODO Auto-generated method stub
		 
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rsRs = null;
		ArrayList<EmpSearchVO> aList = null;
		EmpSearchVO esvo = null;
		
		
		try {
		
			// 커넥션 연결
			conn = OracleConnProperty.getConnection();
		
			// 쿼리문 전달
			// Statement, preparedStatement : 쿼리문의 위치가 다름. 그 다음 메모리
			String sql = EmpSearchQueryMap.getEmpSelectAll();
			pstmt = conn.prepareStatement(sql);
			System.out.println("전체 검색 >>> : \n" + sql);
		
			// 질의결과 받기
			rsRs = pstmt.executeQuery();
			
			// 받은 결과를 dao에서 service로 전달하기
			/*
			1. 질의 결과가 있는지 확인
			2. 질의 결과가 있으면 ArrayList 인스턴스 하기
			3. 리절트셋에 있는 boolean 커서 next 함수로 레코드 가져오기
			4. 가져온 레코드 VO에 담기
			5. VO를 ArrayList에 담기
			*/
			// 1. 질의 결과가 있는지 확인
			if (rsRs != null) {
				// 2. 질의 결과가 있으면 ArrayList 인스턴스 하기
				aList = new ArrayList<EmpSearchVO>();
				
				// 3. 리절트셋에 있는 boolean 커서 next 함수로 레코드 가져오기
				while (rsRs.next()) {
					// 4. 가져온 레코드 VO에 담기
					esvo = new EmpSearchVO();
					
					esvo.setEmpno(rsRs.getString("EMPNO"));
					esvo.setEname(rsRs.getString("ENAME"));
					esvo.setJob(rsRs.getString("JOB"));
					esvo.setMgr(rsRs.getString("MGR"));
					esvo.setHiredate(rsRs.getString("HIREDATE"));
					esvo.setSal(rsRs.getString("SAL"));
					esvo.setComm(rsRs.getString("COMM"));
					esvo.setDeptno(rsRs.getString("DEPTNO"));
				
					// 5. VO를 ArrayList에 담기
					aList.add(esvo);
				}
			} else {
				System.out.println("EmpSerachDAOImpl :: 전체 검색 결과가 없음 >>> : " + rsRs);
			}
			
		} catch (Exception e) {
			System.out.println("EmpSerachDAOImpl :: DAO :: 전체 검색 중 에러 >>> : " + e.getMessage());
		}
		
		// ArrayList 리턴하기
		return aList;
	}

	// 사번 검색
	@Override
	public ArrayList<EmpSearchVO> empSelectEmpno(EmpSearchVO evo) {
		// TODO Auto-generated method stub
		
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rsRs = null;
		ArrayList<EmpSearchVO> aList = null;
		EmpSearchVO esvo = null;
		
		try {
			// 커넥션
			conn = OracleConnProperty.getConnection();
			
			// 쿼리문 전달
			String sql = EmpSearchQueryMap.getEmpSelectEmpno();
			pstmt = conn.prepareStatement(sql);
			System.out.println("사번 검색 >>> : \n" + sql);
			pstmt.clearParameters(); // 매개 변수 받기 전 루틴
			pstmt.setString(1, evo.getEmpno());
			
			// 질의 결과 받기
			rsRs = pstmt.executeQuery();
			// 받은 결과를 dao에서 service로 전달하기
			/*
			1. 질의 결과가 있는지 확인
			2. 질의 결과가 있으면 ArrayList 인스턴스 하기
			3. 리절트셋에 있는 boolean 커서 next 함수로 레코드 가져오기
			4. 가져온 레코드 VO에 담기
			5. VO를 ArrayList에 담기
			*/
			// 1. 질의 결과가 있는지 확인
			if (rsRs != null) {
				// 2. 질의 결과가 있으면 ArrayList 인스턴스 하기
				aList = new ArrayList<EmpSearchVO>();
				
				// 3. 리절트셋에 있는 boolean 커서 next 함수로 레코드 가져오기
				while (rsRs.next()) {
					// 4. 가져온 레코드 VO에 담기
					esvo = new EmpSearchVO();
					
					esvo.setEmpno(rsRs.getString("EMPNO"));
					esvo.setEname(rsRs.getString("ENAME"));
					esvo.setJob(rsRs.getString("JOB"));
					esvo.setHiredate(rsRs.getString("HIREDATE"));
					esvo.setDeptno(rsRs.getString("DEPTNO"));
					// 5. VO를 ArrayList에 담기
					aList.add(esvo);
				}
			} else {
				System.out.println("EmpSerachDAOImpl :: 사번 검색 결과가 없음 >>> : " + rsRs);
			}
		} catch (Exception e) {
			System.out.println("EmpSerachDAOImpl :: DAO :: 사번 검색 중 에러 >>> : " + e.getMessage());
		}
		
		return aList;
	}

	// 이름 검색
	@Override
	public ArrayList<EmpSearchVO> empSelectEname(EmpSearchVO evo) {
		// TODO Auto-generated method stub
		
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rsRs = null;
		ArrayList<EmpSearchVO> aList = null;
		EmpSearchVO esvo = null;
		
		try {
			
			conn = OracleConnProperty.getConnection();
			String sql = EmpSearchQueryMap.getEmpSelectEname();
			pstmt = conn.prepareStatement(sql);
			System.out.println("이름 검색 >>> : \n" + sql);
			
			pstmt.clearParameters();
			pstmt.setString(1, evo.getEname());
			
			rsRs = pstmt.executeQuery();
			
			if (rsRs != null ) {
				aList = new ArrayList<EmpSearchVO>();
				
				while (rsRs.next()) {
					
					esvo = new EmpSearchVO();
					
					esvo.setEmpno(rsRs.getString("EMPNO"));
					esvo.setEname(rsRs.getString("ENAME"));
					esvo.setJob(rsRs.getString("JOB"));
					esvo.setHiredate(rsRs.getString("HIREDATE"));
					esvo.setDeptno(rsRs.getString("DEPTNO"));
					
					aList.add(esvo);
				}
			} else {
				System.out.println("EmpSearchDAOImpl :: 이름 검색 결과가 없음 >>> : " + rsRs);
			}
		} catch (Exception e) {
			System.out.println("EmpSerachDAOImpl :: DAO :: 이름 검색 중 에러 >>> : " + e.getMessage());
		}
		return aList;
	}
	
	// 사번, 이름 검색
	@Override
	public ArrayList<EmpSearchVO> empSelectEmpnoEname(EmpSearchVO evo) {
		// TODO Auto-generated method stub
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rsRs = null;
		ArrayList<EmpSearchVO> aList = null;
		EmpSearchVO esvo = null;
		
		try {
			
			conn = OracleConnProperty.getConnection();
			String sql = EmpSearchQueryMap.getEmpSelectEmpnoEname();
			pstmt = conn.prepareStatement(sql);
			System.out.println("사번, 이름 검색 >>> : \n" + sql);
			
			pstmt.clearParameters();
			pstmt.setString(1, evo.getEmpno());
			pstmt.setString(2, evo.getEname());
			
			rsRs = pstmt.executeQuery();
			
			if (rsRs != null ) {
				aList = new ArrayList<EmpSearchVO>();
				
				while (rsRs.next()) {
					
					esvo = new EmpSearchVO();
					
					esvo.setEmpno(rsRs.getString("EMPNO"));
					esvo.setEname(rsRs.getString("ENAME"));
					esvo.setJob(rsRs.getString("JOB"));
					esvo.setHiredate(rsRs.getString("HIREDATE"));
					esvo.setDeptno(rsRs.getString("DEPTNO"));
					
					aList.add(esvo);
				}
			} else {
				System.out.println("EmpSearchDAOImpl :: 사번, 이름 검색 결과가 없음 >>> : " + rsRs);
			}
		} catch (Exception e) {
			System.out.println("EmpSerachDAOImpl :: DAO :: 사번, 이름 검색 중 에러 >>> : " + e.getMessage());
		}
		return aList;
	}

	// 직책 검색
	@Override
	public ArrayList<EmpSearchVO> empSelectJob(EmpSearchVO evo) {
		// TODO Auto-generated method stub
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rsRs = null;
		ArrayList<EmpSearchVO> aList = null;
		EmpSearchVO esvo = null;
		
		try {
			
			conn = OracleConnProperty.getConnection();
			String sql = EmpSearchQueryMap.getEmpSelectJob();
			pstmt = conn.prepareStatement(sql);
			System.out.println("직책 검색 >>> : \n" + sql);
			
			pstmt.clearParameters();
			pstmt.setString(1, evo.getJob());
			
			rsRs = pstmt.executeQuery();
			
			if (rsRs != null ) {
				aList = new ArrayList<EmpSearchVO>();
				
				while (rsRs.next()) {
					
					esvo = new EmpSearchVO();
					
					esvo.setEmpno(rsRs.getString("EMPNO"));
					esvo.setEname(rsRs.getString("ENAME"));
					esvo.setJob(rsRs.getString("JOB"));
					esvo.setHiredate(rsRs.getString("HIREDATE"));
					esvo.setDeptno(rsRs.getString("DEPTNO"));
					
					aList.add(esvo);
				}
			} else {
				System.out.println("EmpSearchDAOImpl :: 직책 검색 결과가 없음 >>> : " + rsRs);
			}
		} catch (Exception e) {
			System.out.println("EmpSerachDAOImpl :: DAO :: 직책 검색 중 에러 >>> : " + e.getMessage());
		}
		return aList;
	}

	// 날짜 검색
	@Override
	public ArrayList<EmpSearchVO> empSelectHiredate(EmpSearchVO evo) {
		// TODO Auto-generated method stub
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rsRs = null;
		ArrayList<EmpSearchVO> aList = null;
		EmpSearchVO esvo = null;
		
		try {
			
			conn = OracleConnProperty.getConnection();
			String sql = EmpSearchQueryMap.getEmpSelectHiredate();
			pstmt = conn.prepareStatement(sql);
			System.out.println("날짜 검색 >>> : \n" + sql);
			
			pstmt.clearParameters();
			pstmt.setString(1, evo.getFromdate());
			pstmt.setString(2, evo.getTodate());
			
//			System.out.println("evo.getFromdate() >>> : " + evo.getFromdate());
//			System.out.println("evo.getTodate() >>> : " + evo.getTodate());
			
			rsRs = pstmt.executeQuery();
			
			if (rsRs != null ) {
				aList = new ArrayList<EmpSearchVO>();
				
				while (rsRs.next()) {
					
					esvo = new EmpSearchVO();
					
					esvo.setEmpno(rsRs.getString("EMPNO"));
					esvo.setEname(rsRs.getString("ENAME"));
					esvo.setJob(rsRs.getString("JOB"));
					esvo.setHiredate(rsRs.getString("HIREDATE"));
					esvo.setDeptno(rsRs.getString("DEPTNO"));
					
					aList.add(esvo);
				}
			} else {
				System.out.println("EmpSearchDAOImpl :: 날짜 검색 결과가 없음 >>> : " + rsRs);
			}
		} catch (Exception e) {
			System.out.println("EmpSerachDAOImpl :: DAO :: 날짜 검색 중 에러 >>> : " + e.getMessage());
		}
		return aList;
	}
}

8교시 (17:30-18:30)

  • DAO 패턴 (2~6번 구현해보기)
  • EmpSearchServiceImpl
package a.b.c.emp.search.service;

import java.util.ArrayList;

import a.b.c.emp.search.dao.EmpSearchDAO;
import a.b.c.emp.search.dao.EmpSearchDAOImpl;
import a.b.c.emp.search.vo.EmpSearchVO;

public class EmpSearchServiceImpl implements EmpSearchService {

	// 어노테이션
	@Override
	public ArrayList<EmpSearchVO> empSelectAll() {
		// TODO Auto-generated method stub
		
//		EmpSearchDAO esdao = new EmpSearchDAOImpl();
//		ArrayList<EmpSearchVO> aList = esdao.empSelectAll();
//		
//		return aList;
		
		EmpSearchDAO esdao = new EmpSearchDAOImpl();
		return esdao.empSelectAll();
	}

	@Override
	public ArrayList<EmpSearchVO> empSelectEmpno(EmpSearchVO evo) {
		// TODO Auto-generated method stub
		
		EmpSearchDAO esdao = new EmpSearchDAOImpl();
		ArrayList<EmpSearchVO> aList = esdao.empSelectEmpno(evo);
		
		return aList;
	}

	@Override
	public ArrayList<EmpSearchVO> empSelectEname(EmpSearchVO evo) {
		// TODO Auto-generated method stub

		EmpSearchDAO esdao = new EmpSearchDAOImpl();
		ArrayList<EmpSearchVO> aList = esdao.empSelectEname(evo);
		
		return aList;
	}

	@Override
	public ArrayList<EmpSearchVO> empSelectEmpnoEname(EmpSearchVO evo) {
		// TODO Auto-generated method stub
		
		EmpSearchDAO esdao = new EmpSearchDAOImpl();
		ArrayList<EmpSearchVO> aList = esdao.empSelectEmpnoEname(evo);
		
		return aList;
	}

	@Override
	public ArrayList<EmpSearchVO> empSelectJob(EmpSearchVO evo) {
		// TODO Auto-generated method stub
		
		EmpSearchDAO esdao = new EmpSearchDAOImpl();
		ArrayList<EmpSearchVO> aList = esdao.empSelectJob(evo);
		
		return aList;
	}

	@Override
	public ArrayList<EmpSearchVO> empSelectHiredate(EmpSearchVO evo) {
		// TODO Auto-generated method stub
		
		EmpSearchDAO esdao = new EmpSearchDAOImpl();
		ArrayList<EmpSearchVO> aList = esdao.empSelectHiredate(evo);
		
		return aList;
	}
}
  • EmpSearchScr
package a.b.c.emp.search.scr;

import java.util.ArrayList;
import java.util.Scanner;

import a.b.c.emp.search.service.EmpSearchService;
import a.b.c.emp.search.service.EmpSearchServiceImpl;
import a.b.c.emp.search.vo.EmpSearchVO;

public class EmpSearchScr {

	// 화면과 서비스를 이어주는 함수들 <-- 콘트롤러
	
	// 전체 검색
	public ArrayList<EmpSearchVO> empSelectAll() {
		System.out.println("EmpSearchScr.empSelectAll() 함수 시작 >>> : ");
		
		EmpSearchService es = new EmpSearchServiceImpl();
		ArrayList<EmpSearchVO> aList = es.empSelectAll();
		
		return aList;
	}
	
	// 사번 검색
	public ArrayList<EmpSearchVO> empSelectEmpno(String empno) {
		System.out.println("EmpSearchScr.empSelectEmpno() 함수 시작 >>> : ");
		
		EmpSearchService es = new EmpSearchServiceImpl();
		
		// VO에 검색 키워드 사번을 세팅한다.
		EmpSearchVO evo = null;
		evo = new EmpSearchVO();
		evo.setEmpno(empno);
		
		ArrayList<EmpSearchVO> aList = es.empSelectEmpno(evo);
		
		return aList;
	}
	
	// 이름 검색
	public ArrayList<EmpSearchVO> empSelectEname(String ename) {
		System.out.println("EmpSearchScr.empSelectEname() 함수 시작 >>> : ");
		
		EmpSearchService es = new EmpSearchServiceImpl();
		
		EmpSearchVO evo = null;
		evo = new EmpSearchVO();
		evo.setEname(ename);
		
		ArrayList<EmpSearchVO> aList = es.empSelectEname(evo);
		
		return aList;
	}
	
	// 사번, 이름 검색
	public ArrayList<EmpSearchVO> empSelectEmpnoEname(String empno, String ename) {
		System.out.println("EmpSearchScr.empSelectEmpnoEname() 함수 시작 >>> : ");
			
		EmpSearchService es = new EmpSearchServiceImpl();
			
		EmpSearchVO evo = null;
		evo = new EmpSearchVO();
		evo.setEmpno(empno);
		evo.setEname(ename);
			
		ArrayList<EmpSearchVO> aList = es.empSelectEmpnoEname(evo);
			
		return aList;
	}
	
	// 직책 검색
	public ArrayList<EmpSearchVO> empSelectJob(String job) {
		System.out.println("EmpSearchScr.empSelectJob() 함수 시작 >>> : ");
				
		EmpSearchService es = new EmpSearchServiceImpl();
				
		EmpSearchVO evo = null;
		evo = new EmpSearchVO();
		evo.setJob(job);
				
		ArrayList<EmpSearchVO> aList = es.empSelectJob(evo);
			
		return aList;
	}
	
	// 날짜 검색
		public ArrayList<EmpSearchVO> empSelectHiredate(String fromdate, String todate) {
		System.out.println("EmpSearchScr.6empSelectHiredate() 함수 시작 >>> : ");
					
		EmpSearchService es = new EmpSearchServiceImpl();
					
		EmpSearchVO evo = null;
		evo = new EmpSearchVO();
		evo.setFromdate(fromdate);
		evo.setTodate(todate);
		
					
		ArrayList<EmpSearchVO> aList = es.empSelectHiredate(evo);
			
		return aList;
	}
		
	// 메인 함수가 화면 역할을 한다.
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		System.out.println("EmpSearchScr.main() 함수 시작 >>> : ");
		
		System.out.println("검색한 번호는 			\n"
				+ "1. 전체검색 		\n"
				+ "2. 사번 검색 		\n"
				+ "3. 이름 검색 		\n"
				+ "4. 사번, 이름 검색 	\n"
				+ "5. 직책 검색 		\n"
				+ "6. 날짜 검색 		\n");
		
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		
		if (1 == n) {
			System.out.println(n + " 전체 검색을 선택 했습니다 >>> : ");
			
			EmpSearchScr ess = new EmpSearchScr();
			ArrayList<EmpSearchVO> aList = ess.empSelectAll();
			
			if (aList !=null && aList.size() > 0) {
				for (int i=0; i < aList.size(); i++) {
					EmpSearchVO esvo = aList.get(i);
					
					System.out.print(esvo.getEmpno() + " : ");
					System.out.print(esvo.getEname() + " : ");
					System.out.print(esvo.getJob() + " : ");
					System.out.print(esvo.getMgr() + " : ");
					System.out.print(esvo.getHiredate() + " : ");
					System.out.print(esvo.getSal() + " : ");
					System.out.print(esvo.getComm() + " : ");
					System.out.println(esvo.getDeptno());
				}
			}
		}
		
		if (2 == n) {
			System.out.println(n + " 사번 검색을 선택 했습니다 >>> : ");
			
			Scanner sc2 = new Scanner(System.in);
			String empno = sc2.next();
			
			EmpSearchScr es2 = new EmpSearchScr();
			ArrayList<EmpSearchVO> aList = es2.empSelectEmpno(empno);
			
			if (aList !=null && aList.size() > 0) {
				for (int i=0; i < aList.size(); i++) {
					EmpSearchVO esvo = aList.get(i);
					
					System.out.print(esvo.getEmpno() + " : ");
					System.out.print(esvo.getEname() + " : ");
					System.out.print(esvo.getJob() + " : ");
					System.out.print(esvo.getHiredate() + " : ");
					System.out.println(esvo.getDeptno());
				}
			}
			
			sc2.close();
		}
		
		if (3 == n) {
			System.out.println(n + " 이름 검색을 선택 했습니다 >>> : ");
			
			Scanner sc3 = new Scanner(System.in);
			String ename = sc3.next();
			
			EmpSearchScr es3 = new EmpSearchScr();
			ArrayList<EmpSearchVO> aList = es3.empSelectEname(ename);
			
			if (aList !=null && aList.size() > 0) {
				for (int i=0; i < aList.size(); i++) {
					EmpSearchVO esvo = aList.get(i);
					
					System.out.print(esvo.getEmpno() + " : ");
					System.out.print(esvo.getEname() + " : ");
					System.out.print(esvo.getJob() + " : ");
					System.out.print(esvo.getHiredate() + " : ");
					System.out.println(esvo.getDeptno());
				}
			}
			
			sc3.close();
		}
		
		if (4 == n) {
			System.out.println(n + "  사번, 이름 검색을 선택 했습니다 >>> : ");
			
			Scanner sc4 = new Scanner(System.in);
			String empno = sc4.next();
			String ename = sc4.next();
			
			EmpSearchScr es4 = new EmpSearchScr();
			ArrayList<EmpSearchVO> aList = es4.empSelectEmpnoEname(empno, ename);
			
			if (aList !=null && aList.size() > 0) {
				for (int i=0; i < aList.size(); i++) {
					EmpSearchVO esvo = aList.get(i);
					
					System.out.print(esvo.getEmpno() + " : ");
					System.out.print(esvo.getEname() + " : ");
					System.out.print(esvo.getJob() + " : ");
					System.out.print(esvo.getHiredate() + " : ");
					System.out.println(esvo.getDeptno());
				}
			}
			
			sc4.close();
		}
		
		if (5 == n) {
			System.out.println(n + "  직책 검색을 선택 했습니다 >>> : ");
			
			Scanner sc5 = new Scanner(System.in);
			String job = sc5.next();
			
			EmpSearchScr es5 = new EmpSearchScr();
			ArrayList<EmpSearchVO> aList = es5.empSelectJob(job);
			
			if (aList !=null && aList.size() > 0) {
				for (int i=0; i < aList.size(); i++) {
					EmpSearchVO esvo = aList.get(i);
					
					System.out.print(esvo.getEmpno() + " : ");
					System.out.print(esvo.getEname() + " : ");
					System.out.print(esvo.getJob() + " : ");
					System.out.print(esvo.getHiredate() + " : ");
					System.out.println(esvo.getDeptno());
				}
			}
			
			sc5.close();
		}
		
		if (6 == n) {
			System.out.println(n + "  날짜 검색을 선택 했습니다 >>> : ");
			
			Scanner sc6 = new Scanner(System.in);
			String fromdate = sc6.next();
			String todate = sc6.next();
//			System.out.println("fromdate >>> : " + fromdate);
//			System.out.println("todate >>> : " + todate);
			
			EmpSearchScr es5 = new EmpSearchScr();
			ArrayList<EmpSearchVO> aList = es5.empSelectHiredate(fromdate, todate);
			
			if (aList !=null && aList.size() > 0) {
				for (int i=0; i < aList.size(); i++) {
					EmpSearchVO esvo = aList.get(i);
					
					System.out.print(esvo.getEmpno() + " : ");
					System.out.print(esvo.getEname() + " : ");
					System.out.print(esvo.getJob() + " : ");
					System.out.print(esvo.getHiredate() + " : ");
					System.out.println(esvo.getDeptno());
				}
			}
			
			sc6.close();
		}
		sc.close();
	}
}

Notes


728x90