ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 싱글톤(singleton) 패턴을 활용한 DB접속
    프로그래밍/JAVA 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

    '프로그래밍 > 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

    댓글

Designed by Tistory.