JDBC
[days02] 싱글톤 클래스 작성
다연
2020. 11. 24. 22:29
반응형
DBConn
package com.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
//싱글톤
public class DBConn {
//디폴트생성자
private DBConn() {}
private static Connection connection = null;
//private로 잡아서 바로 접근 못하도록
//Connection : 자바 SW와 DB를 연결해주는 다리
public static Connection getConnection() {
if(connection == null) {//null이면 생성해서 돌리고 널 아니면 생성 안하고 돌리기
String className ="oracle.jdbc.driver.OracleDriver"; //드라이버 클래스 이름
//밖에서 OracleD까지 치고 위에 생기는 import 값 복붙해오기
String url = "jdbc:oracle:thin:@localhost:1521:xe"; //type4 (thin)
//항상 내 디비 연결할 순 없고 다른 서버의 다른 디비 연결해야 할 때가 있다 =>오버로딩
String user = "scott";
String password = "tiger";
try {
Class.forName(className);
connection = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
//드라이버 로딩 오류
e.printStackTrace();
} catch (SQLException e) {
//컨넥션 오류 (디비 연결 오류)
e.printStackTrace();
}
}
return connection;
}
//오버로딩
public static Connection getConnection(
String url, String user, String password ) {
if(connection == null) {//null이면 생성해서 돌리고 널 아니면 생성 안하고 돌리기
String className ="oracle.jdbc.driver.OracleDriver"; //드라이버 클래스 이름
//클래스 네임도 달라진다면 다른 dbms를 연동하겠다는 의미(오라클이 아닌 mysql 등)
//그럴 경우 getConnection을 하나 더 복사 (오버로딩 해서 String className까지 매개변수로 주기)
try {
Class.forName(className);
connection = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
//드라이버 로딩 오류
e.printStackTrace();
} catch (SQLException e) {
//컨넥션 오류 (디비 연결 오류)
e.printStackTrace();
}
}
return connection;
}
//
public static void close() { //DB를 닫는 close 함수
try {
if(connection != null && !connection.isClosed()) {
//커넥션 객체가 닫혔는지 안닫혔는지 묻고 닫혔다면 true 반환
connection.close();
//객체가 있고 안닫혔다면 닫겠다
}
} catch (SQLException e) {
e.printStackTrace();
}
connection = null;
//중요
}
}
Re01
package review;
import java.sql.Connection;
import com.util.DBConn;
public class Re01 {
public static void main(String[] args) {
//DBConn con = new DBConn(); 매번 new연산자로 만드는것을 막기위해 DBConn에 private라고 씀
Connection con = DBConn.getConnection();
System.out.println(con);
DBConn.close();
}
}
출력값 : oracle.jdbc.driver.T4CConnection@4629104a
다른 오라클 서버 연결
package days02;
import java.sql.Connection;
import java.sql.SQLException;
import com.util.DBConn;
public class Ex01_02 {
public static void main(String[] args) {
String ipAddress = "192.168.0.26";
int port = 1521;
String SID = "XE";
String url = String.format(
"jdbc:oracle:thin:@%s:%d:%s", ipAddress, port, SID); //type4 (thin)
String user = "hr";
String password = "lion";
Connection con = DBConn.getConnection(url, user, password);
System.out.println(con);
//con.close();
DBConn.close();
System.out.println("=END=");
}
}
반응형