dbconnオブジェクトの作成(データベース接続)


<dbConn 객체 생성>

package com.util;

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

public class DBConn
{
	// 변수 선언
	private static Connection dbConn; // static을 쓴 이유는 dbConn이 공유되어야 하기 때문
	                                  // 여기에서 static은 탄생시점보단 공유의 개념으로 사용
									  // 지금은 dbConn이 추상적인 상태,
	
	// 메소드 정의 → 데이터베이스와 연결하는 메소드 정의
	public static Connection getConnection() throws ClassNotFoundException  // Connection은 열쇠, getConnection()은 열쇠 내놔라 
, SQLException
	{
		// 한 번 연결된 객체를 계속해서 사용
		// 즉, 연결되지 않은 경우에만 연결을 시도하겠다는 의미
		// dbConn이 null일 때만 if문 실행
		// != null 이면 Connection이 되어있다는 거니까 dbConn을 return
		// == null 이면 연결시켜줘야함.
		// → 싱글톤(디자인 패턴)
		if (dbConn == null)
		{
			String url = "jdbc:oracle:thin:@localhost:1521:xe";
			// -- 『localhost』 는 오라클 서버의 ip 주소를 기재하는 부분
			//    『1521』은 오라클 리스너 Port Number
			//	  『xe』는 오라클 SID (Express Edition 의 SID는 xe)
			
			String user = "scott";
			// -- 오라클 사용자 계정 이름
			
			String pwd = "tiger";
			// -- 오라클 사용자 계정 암호
			
			Class.forName("oracle.jdbc.driver.OracleDriver");
			// Class라는 class는 class를 찾아주는 class (ㅋㅋ)
			// forName은 이 경로를 타고들어가 OracleDriver 라는 클래스를 찾아줘 라는 의미.
			// 예외가 발생하는 상황
			// OracleDriver 클래스에 대한 객체 생성(클래스를 찾아줘)
			
			dbConn = DriverManager.getConnection(url, user, pwd);
			//-- 오라클 서버 실제 연결
			//   갖고 있는 인자값(매개변수)은 오라클주소, 계정명, 패스워드
			//   
			
		}
		return dbConn;
		//-- 구성된 연결 객체 반환
	}
	
	// getConnection() 메소드의 오버로딩 → 연결 
	public static Connection getConnectino(String url, String user, String pwd) throws SQLException, ClassNotFoundException
	{
		if (dbConn == null)
		{
			Class.forName("oracle.jdbc.driver.OracleDriver");
			dbConn = DriverManager.getConnection(url, user, pwd);
		}
		
		
		return dbConn;
	}
	
	// 메소드 정의 → 연결 종료
	public static void close() throws SQLException
	{
		// dbConn이 null 이 아닐때 즉, 연결 된 상태일때 종료하겠다
		if (dbConn != null) 
		{
			// 연결 객체(dbConn)이 isClosed() 메소드를 통해 연결 상태 확인
			//-- 연결이 닫혀있는 경우 true를 반환
			//-- 연결이 닫혀있지 않은 경우 false 반환
			if (!dbConn.isClosed())
			{
				dbConn.close();
				//-- 연결 객체의 close() 메소드 호출을 통해 연결 종료
			}
		}
		
		// forName , getConnection 메소드들(기울어져있는글씨)은 static 메소드들.
		// 인스턴스 생성 안하고 바로 사용했으니.
		dbConn = null;
		//-- 연결 객체 초기화
		
	}
	
	
}
<try~catch 문을 통해 예외처리  dbConn 객체 생성>



package com.util;

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

public class DBConnBackup
{
	private static Connection dbConn;
	
	public static Connection getConnection()
	{
		if (dbConn == null)
		{
			try
			{
				String url = "jdbc:oracle:thin:@localhost:1521:xe";
				String user = "scott";
				String pwd = "tiger";
				
				Class.forName("oracle.jdbc.driver.OracleDriver");
				dbConn = DriverManager.getConnection(url, user, pwd);
			} catch (Exception e)
			{
				System.out.println(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)
			{
				System.out.println(e.toString());	
				//-- 오라클 연결 실패 시 오류 메세지 출력 부분
				// 반드시 작성..!!
			}
		}
		

		return dbConn;
	}
	
	public static void close()
	{
		if (dbConn != null)
		{
			try
			{
				if (!dbConn.isClosed())
					dbConn.close();
				
			} catch (Exception e)
			{
				System.out.println(e.toString());
			}
		}
		
		dbConn = null;
	}
}