-
[Java] 싱글톤(singleton) 패턴을 활용한 DB접속프로그래밍/JAVA 2022. 8. 12. 23:32728x90
싱글톤 패턴은 디자인 패턴 중 하나로 객체의 인스턴스가 단 한개만 생성되어 사용하는 것을 의미하며, 메모리 측면에서 공유자원이기 때문에 메모리 낭비를 방지할 수 있다.
이런 패턴은 프로그램 내에서 하나로 공유해야하는 객체를 싱글톤 패턴으로 처리하여 모든 사용자가 해당 객체를 공유하여 사용할 수 있도록 할 때 사용된다.
싱글톤 패턴을 사용하여 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'프로그래밍 > JAVA' 카테고리의 다른 글
[Java] 스레드 동기화(Thread Synchronization) (0) 2022.08.14 [Java] 스레드(thread) (0) 2022.08.14 [Java] DB와 연동하기 (0) 2022.08.12 [Java] 제네릭(Generic) 타입 (0) 2022.08.11 [Java] 중첩 클래스 (0) 2022.08.11