package util;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class DBManager {
//커넥션객체를 얻어오는 메서드
public static Connection getConnection() {
Connection conn = null;
try {
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
DataSource datasource = (DataSource) envContext.lookup("jdbc/TestDB");
conn = datasource.getConnection();
} catch(Exception e) {
e.printStackTrace();
}
return conn;
}
//작업 수행 후 리소스 해제 - select
public static void close(Connection conn, Statement stmt, ResultSet rs) {
try {
rs.close();
stmt.close();
conn.close();
} catch(Exception e) {
e.printStackTrace();
}
}
//작업 수행 후 리소스 해제 - update, insert, delete
public static void close(Connection conn, Statement stmt) {
try {
stmt.close();
conn.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
dao클래스는 싱글톤패턴으로 만든다. 싱글톤패턴은 인스턴스가 오로지 단 하나만 존재할 수 있도록 클래스를 설계하는 것을 말한다. 디자인패턴의 일종이다.
DAO클래스가 하는 일은 데이터베이스의 데이터를 VO객체에 가져오거나 VO객체의 저장된 값을 데이터베이스에 추가하는 등, CRUD작업을 위한 메서드들이 정의된 클래스이다.
이런 작업들을 하기위해 매번 DAO객체를 생성할 필요없이 메모리에 하나의 객체를 올려놓고 이를 사용하는 것이 시스템의 성능면에서 효율적이다.
DAO클래스는 보통 데이터베이스의 테이블 하나당 하나씩 설계를 한다.
(그런데 만약 join을 해야할 경우엔 어떻게 해야할까??)
싱글톤패턴으로 작성하기 위한 조건
package com.msriver.dao;
public class BoardDAO {
//생성자 private
private BoardDAO() {};
//instance도 private;
private static BoardDAO instance = new BoardDAO();
//setter는 정의 x, getter만 만듬
public static BoardDAO getInstance() {
return instance;
}
}