💡 싱글톤(singleton) 디자인 패턴을 이용한 Database 연결 객체 생성 전용 클래스
→ DB 연결 과정이 부하가 매우 크기 때문에 한 번 연결된 객체를 계속 사용하는 것이 좋지 않을까..
💡 데이터베이스 연결 준비 (아래 코드는 외워두자!)
/*=========
DBConn
============*/
package com.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConn
{
// 변수 선언(연결 객체)
private static Connection dbConn; // 커넥션 타입의 변수 선언
// 메소드 정의 → 연결
public static Connection getConnection() throws ClassNotFoundException, SQLException
{
// 한 번 연결된 객체를 계속 사용
// 즉, 연결되지 않은 경우에만 연결을 시도하겠다는 의미
// → 싱글톤(디자인 패턴)
if (dbConn == null)
{
String url = "jdbc:oracle:thin:@localhost:1521:xe";
//-- 『localhost』는 오라클 서버의 ip 주소를 기재하는 부분
// "jdbc:oracle:thin:@211.238.142.164:1521:xe";
// "jdbc:oracle:thin:@127.0.0.1:1521:xe"; 127로 시작하는건 localhost랑 같다고 생각하면 된다.
//-- 『1521』은 오라클 리스터 Port Number
//-- 『xe』는 오라클 SID(Express Edition 의 SID 는 xe)
String user = "scott";
//-- 오라클 사용자 계정 이름
String pwd = "tiger";
//-- 오라클 사용자 계정 암호
Class.forName("oracle.jdbc.driver.OracleDriver"); // Class 라는 이름을 가진 클래스, forName : 이름으로 찾아준다.
//-- OracleDriver 클래스에 대한 객체 생성(클래스 찾아줘~!!!!)
dbConn = DriverManager.getConnection(url, user, pwd);
//-- 오라클 서버 실체 연결
// 갖고 있는 인자값(매개변수)은 오라클주소, 계정명, 패스워드
}
return dbConn;
// 구성된 연결 객체 반환
}
// 메소드 정의 → 오버로딩 → 연결
public static Connection getConnection(String url, String user, String pwd) throws ClassNotFoundException, SQLException
{
if (dbConn == null)
{
Class.forName("oracle.jdbc.driver.OracleDriver");
dbConn = DriverManager.getConnection(url, user, pwd);
}
return dbConn;
}
public static void close() throws SQLException
{
if (dbConn != null)
{
if (!dbConn.isClosed())
{
dbConn.close();
}
}
dbConn = null;
}
}
💡 데이터베이스 연결 확인
package com.test;
import java.sql.Connection;
import java.sql.SQLException;
import com.util.DBConn;
public class Test002
{
public static void main(String[] args) throws ClassNotFoundException, SQLException
{
Connection conn = DBConn.getConnection();
// ※ DB 연결 과정이 매우 부하가 크기 때문에
// 한 번 연결된 객체를 계속 사용할 수 있도록 Singleton 패턴 적용~!!!
// 위의 getConnection() 메소드를 통해
// 데이터베이스와 정상적인 연결이 이루어진 상황이라면...
if (conn != null)
{
System.out.println("데이터베이스 연결 성공~!!!");
}
DBConn.close();
}
}