본문 바로가기

프로그래밍

[Java] DB 인스턴스 하나만 만들기

반응형
public class DataBase
{
private static Connection m_conn = null;
private static DataBase s_Obj = new DataBase();
private DataBase()
{
if( s_Obj == null)
{
s_Obj = this;
}
}
public static DataBase getInstance()
{
return s_Obj;
}
//connection 반납
public Connection getConnection( String szDBUrl, String szUser, String szPass)
{
try
{
if( m_conn == null)
{
//String szDBUrl = "jdbc:oracle:thin:@" + m_szHost + ":" + m_szPort + ":" + m_szDBName;
Class.forName( "oracle.jdbc.driver.OracleDriver");
m_conn = DriverManager.getConnection( szDBUrl, szUser, szPass);
}
return m_conn;
}
catch( Exception e)
{
System.out.println( " @DB Connection Create Error");
e.printStackTrace();
return null;
}
}
public void closeConnection()
{
try
{
m_conn.close();
}
catch( Exception e)
{
System.out.println( " @Already Closed DB Connection");
}
}
}


DataBase 클래스의 생성자를 private 로 선언하여 자기 자신만 생성할 수 있도록 하고, static 으로 미리 생성해두면, 객체가 닫 하나만 존재하게 된다. 그리고 이 안에서 관리하는 connection 역시 유일하게 된다.

connection 을 여러개 관리하고 싶으면, pool 을 만들어 두어 미리 생성해 관리하는 방법도 고려해 볼 수 있다.. 이는 이미 오래전부터 쓰여오던 방식이라, 오픈된 소스가 많이 있다.

정리해두기위해 올린다.
반응형