파일 구조는 다음과 같이 구성하였다.


controller는 기능들이 실행될 class


vo는 여러가지로 표현할 수 있는데 DB에선 엔터티라고 하고 데이터 테이블이 들어올 클래스이다.


dao는 db 데이터를 끌어올 기능을 넣을 class 이다.


자세한 설명은 예제의 주석에서 확인하자.


먼저 Employee 테이블이 들어갈 클래스 작성



package model.vo;

import java.sql.Date;

// 보통 vo 클래스 파일의 이름을 DB의 이름과 같게한다.

// vo(value object) == entity == record == row
// do(domain object) == dto(data transfer object)
// DB 테이블의 한 행의 정보가 기록되는 저장용 객체

// 1. 반드시 캡슐화가 적용되어야 한다 : 모든 필드는 private가 된다.
// 2. 기본 생성자와 매개변수 있는 생성자를 작성해야 한다. (매개변수가 있는 생성자가 있다면 기본 생성자를 jvm에서 생성해주지 않기 때문)
// 3. 모든 필드에 대해 getter와 setter 작성해야 한다.
// 4. 직렬화 처리를 해야 한다.
// optional. toString() 오버라이딩 <- 필드값을 확인하기 위해

public class Employee implements java.io.Serializable{
	private int empNo;
	private String empName;
	private String job;
	private int mgr;
	private Date hireDate;
	private int sal;
	private int comm;
	private int deptNo;
	// 이러한 객체를 vo 객체라고 할 수 있다.
	
	public Employee() {
		
	}
	
	public Employee(int empNo, String empName, String job, int mgr, Date hireDate, int sal, int comm, int deptNo) {
		super();
		this.empNo = empNo;
		this.empName = empName;
		this.job = job;
		this.mgr = mgr;
		this.hireDate = hireDate;
		this.sal = sal;
		this.comm = comm;
		this.deptNo = deptNo;
	}
	
	public Employee(int empNo, String empName, String job, int mgr, int sal, int comm, int deptNo) {
		super();
		this.empNo = empNo;
		this.empName = empName;
		this.job = job;
		this.mgr = mgr;
		this.sal = sal;
		this.comm = comm;
		this.deptNo = deptNo;
	}

	public int getEmpNo() {
		return empNo;
	}

	public void setEmpNo(int empNo) {
		this.empNo = empNo;
	}

	public String getEmpName() {
		return empName;
	}

	public void setEmpName(String empName) {
		this.empName = empName;
	}

	public String getJob() {
		return job;
	}

	public void setJob(String job) {
		this.job = job;
	}

	public int getMgr() {
		return mgr;
	}

	public void setMgr(int mgr) {
		this.mgr = mgr;
	}

	public Date getHireDate() {
		return hireDate;
	}

	public void setHireDate(Date hireDate) {
		this.hireDate = hireDate;
	}

	public int getSal() {
		return sal;
	}

	public void setSal(int sal) {
		this.sal = sal;
	}

	public int getComm() {
		return comm;
	}

	public void setComm(int comm) {
		this.comm = comm;
	}

	public int getDeptNo() {
		return deptNo;
	}

	public void setDeptNo(int deptNo) {
		this.deptNo = deptNo;
	}
	
	
	
	
}




다음으로는 메인(TestMain)에 JDBCModel 추가



package controller;

import model.dao.JDBCModel;
import model.vo.Employee;

public class TestMain {

	public static void main(String[] args) {
		JDBCModel model = new JDBCModel();
		
		전체 조회
		model.testJDBC();
		
	}

}



다음으로는 JDBCModel에서 db를 불러오고 사용하는 작업



package model.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import model.vo.Employee;

public class JDBCModel {
	// 사원 전체 조회용 메소드
	public void testJDBC() {
		Connection conn = null;
		Statement stmt = null;
		ResultSet rset = null;
		// ctrl + shift + O 를 누르면 import 해야하는 항목이 나옴.
		
		// 1. 해당 데이터 베이스에 대한 라이브러리 등록 작업
		// Class.forName("클래스명"); // ClassNotFoundException 처리를 해야 함
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
			
			// 2.데이터베이스와 연결함  // SQLException 처리를 해야한다.
			conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe", "scott", "tiger");
			
			System.out.println(conn);
			
			// 3. 쿼리문 작성 후 DB에서 쿼리문 실행시키고 결과를 가지고 옴
			String query = "SELECT * FROM EMP";
			
			stmt = conn.createStatement();
			
			rset = stmt.executeQuery(query);
			
			while (rset.next()) {
				System.out.println(rset.getInt("EMPNO") + ", " + 
									rset.getString("ENAME") + ", " +
									rset.getString("JOB") + ", " +
									rset.getInt("MGR") + ", " +
									rset.getDate("HIREDATE") + ", " + 
									rset.getInt("SAL") + ", " +
									rset.getInt("COMM") + ", " +
									rset.getInt("DEPTNO")
						);
				
			}

		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				// 4. DB와 관련된 객체는 반드시 close 해야 함
				rset.close();
				stmt.close();
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
	}

}



위와 같이 작성하고


Main 클래스를 실행하면 다음과 같이 콘솔에 연결 정보가 출력된다.








+ Recent posts