프로그래밍/JAVA
[Java] 싱글톤(singleton) 패턴을 활용한 DB접속
하와이블루
2022. 8. 12. 23:32
728x90
싱글톤 패턴은 디자인 패턴 중 하나로 객체의 인스턴스가 단 한개만 생성되어 사용하는 것을 의미하며, 메모리 측면에서 공유자원이기 때문에 메모리 낭비를 방지할 수 있다.
이런 패턴은 프로그램 내에서 하나로 공유해야하는 객체를 싱글톤 패턴으로 처리하여 모든 사용자가 해당 객체를 공유하여 사용할 수 있도록 할 때 사용된다.
싱글톤 패턴을 사용하여 BD에 연결하는 코드를 다른 클래스로 만들어 사용하고 싶을 때 사용할 수 있도록 코드를 작성해보자.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Dbconn {
private static Connection conn;
public static Connection getConnection() throws SQLException,ClassNotFoundException{
String url = "jdbc:mysql://127.0.0.1/DB?useSSL=false";
String userid = "root";
String userpw = "0000";
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(url,userid,userpw);
return conn;
}
public static void dbclose(){
try{
conn.close();
conn = null;
}catch (SQLException e){
e.printStackTrace();
}
}
}
이렇게 클래스를 구현해주고 필요할때 클래스를 호출하여 사용이 가능하다.
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class Jdbc6 {
public static void main(String[] args) {
System.out.println("****** 회원 목록******");
StringBuilder sql = new StringBuilder();
sql.append("select mem_idx, mem_userid, mem_name, mem_hp from tb_member");
try {
Connection conn = Dbconn.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql.toString());
//ResultSet 인터페이스를 통해 레코드 단위로 데이터 호출
while (rs.next()) { // rs.next() 데이터 유무 확인
int mem_idx = rs.getInt("mem_idx");
String mem_userid = rs.getString("mem_userid");
String mem_name = rs.getString("mem_name");
System.out.println("번호 : " + mem_idx + ", 아이디 : " + mem_userid + ", 이름 : " + mem_name);
}
Dbconn.dbclose();
} catch (Exception e) {
e.printStackTrace();
}
}
}
/* 실행결과
****** 회원 목록******
번호 : 1, 아이디 : apple, 이름 : 김사과
번호 : 2, 아이디 : banana, 이름 : 반하나
번호 : 3, 아이디 : orange, 이름 : 오렌지
번호 : 4, 아이디 : melon, 이름 : 이멜론
번호 : 5, 아이디 : berry, 이름 : 배애리
번호 : 6, 아이디 : cherry, 이름 : 최애리
번호 : 12, 아이디 : avocado, 이름 : 안가도
*/
728x90