Study📚/Java

자바 - JDBC Database 연결 객체 전용 클래스

woo!na 2023. 11. 20. 23:33

 

DB 연결은 부하가 매우 크기 때문에 한 번 연결된 객체를 계속 사용하는 것이 좋음

→ 싱글톤(Singleton) 디자인 패턴!! (== 사무실에 있는 정수기)

 

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:0000:xe";
			//-- 『localhost』 는 오라클 서버의 ip 주소를 기재하는 부분
            
			String user = "user";
			String pwd = "password";
			Class.forName("oracle.jdbc.driver.OracleDriver");
			//-- 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;
		//-- 연결 객체 초기화
	}
}

 

위 구문들 throws 안 하고 try ~ catch 도 가능

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

public class DBConn
{
	private static Connection dbConn;

	public static Connection getConnection()
	{
		if (dbConn == null)
		{
			String url = "jdbc:oracle:thin:@localhost:0000:xe";
			String user = "user";
			String pwd = "password";
            try
            {
                Class.forName("oracle.jdbc.driver.OracleDriver");
                dbConn = DriverManager.getConnection(url, user, pwd);	
            }
            catch(Exception e)
            {
            	e.toString();
            }
			
		}
		return dbConn;
	}
	
	public static Connection getConnection(String url, String user, String pwd)
	{
		if (dbConn == null)
		{
        	try
            {
                Class.forName("oracle.jdbc.driver.OracleDriver");
                dbConn = DriverManager.getConnection(url, user, pwd);	
            }
            catch(Exception e)
            {
            	e.toString();
            }
		}
		return dbConn;
	}
	
	public static void close()
	{
		if (dbConn != null)
		{
        	try
            {
            	if (!dbConn.isClosed())
					dbConn.close();
            }
            catch(Exception e)
            {
            	e.toString();
            }
		}
		dbConn = null;
	}
}