JDBC 개념 정리 및 이클립스 SQL Server 메이븐 프로젝트 DB 연동 및 DB 데이터 가져오기

JDBC 개념

JDBC는 Java Database Connectivity의 약자로 자바 프로그래밍 시 데이터베이스를 사용 및 절차에 대한 규약입니다. 

자바에서는 표준 인터페이스 형식으로 JDBC API를 제공하고 데이터베이스 개발업체에서는 제품의 데이터베이스에 맞게 구현해서 드라이버를 제공하고 사용자는 해당 드라이버를 이용해 데이터베이스 프로그래밍을 합니다.

  1. 자바에서 JDBC API 제공
  2. 데이터베이스 개발 업체는 JDBC 인터페이스를 각 DB에 맞게 구현 후 드라이버 배포
  3. 개발자는 해당 드라이버를 가지고 자바 데이터베이스 프로그래밍

SQL Server 이클립스 메이븐 프로젝트 연동

이클립스에서 메이븐 프로젝트는 라이브러리의 의존성 문제를 해결하고 손쉽게 프로젝트에 라이브러리를 추가할 수 있습니다.


pom.xml 파일에 SQL Server dependency 추가

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>8.4.1.jre8</version>
</dependency>
※ version 태그는 자신의 JRE 버전에 맞게 수정해서 사용하면 됩니다.



SQL Server 이클립스 데이터베이스 프로그래밍 방법

위와 같이 pom.xml에 dependency를 추가하면 이클립스에서 SQL Server 데이터베이스 사용을 위한 밑 작업은 끝난 셈이며, 이제 데이터베이스 프로그래밍을 시작하면 됩니다.

SQL Server JDBC 프로그래밍 순서

  1. 자바 SQL 패키지 import
  2. JDBC SQL Server 드라이버 로드
  3. DB 연결 객체(Connection) 생성
  4. SQL 호출 문 작성
  5. 커넥션 객체의 메서드에 SQL 호출문을 인자로 해서 호출
  6. 5번에 반환값을 Statement객체에 할
  7. Statement 객체의 쿼리 호출 메서드 실행
  8. 7번의 반환값을 ResultSet 객체에 할당
  9. ResultSet 객체로 비즈니스 로직 사용
  10. 사용후 생성한 DB 관련 객체는 close 메서드 호출



SQL Server JDBC 프로그래밍 예제

아래의 예제는 SQL Server에 접속해 SELECT 쿼리를 조회하고 조회된 데이터를 반환하는 메서드입니다. 

이때 중요한 점은 사용한 데이터베이스 객체는 사용 후 close 메서드를 사용해서 닫아줘야 한다는 것으로 사용한 객체를 닫지 않을 경우, 커넥션이 계속 유지되어 데이터베이스 서버에 좋지 않은 영향을 줄 수 있습니다.

// 1. 자바 SQL 패키지 import
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class SFWorkorderDAO {
    // * DB 접속 정보는 따로 변수로 선언
    private static String dburl = "jdbc:sqlserver://127.0.0.1;databaseName=testdb";
    private static String dbUser = "sa";
    private static String dbpasswd = "p1234";
   
   
    public SFWorkorder getWork(String woId) {
        SFWorkorder wo = null;
       
        Connection conn = null;
        PreparedStatement ps =null;
        ResultSet  rs = null;
       
        try {
            // 2. JDBC  SQL Server 드라이버 로드
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
           
            // 3. DB 연결 객체(Connection) 생성
            conn = DriverManager.getConnection(dburl, dbUser, dbpasswd);          
           

            // 4. SQL 호출 문 작성
            String sql = "SELECT TOP 1 WORKORDERID, PRODUCTDEFID FROM SF_WORKORDER";
           
            // 5. 커넥션 객체의 메서드에 SQL 호출문을 인자로 해서 호출
            // 6. 5번에 반환값을  Statement객체에 할당
            ps = conn.prepareStatement(sql);
           
            // 7. Statement 객체의 쿼리 호출 메서드 실행
            // 8. 7번의 반환값을 ResultSet 객체에 할당
            rs = ps.executeQuery();
           
            // 9. ResultSet 객체로 비즈니스 로직 사용
            while(rs.next())
            {
                String id =  rs.getString("WORKORDERID");
                String itemcode =  rs.getString("PRODUCTDEFID");
               
                wo = new SFWorkorder(id, itemcode);
            }
           
        } catch (Exception e)   {
            e.printStackTrace();
        }   finally {
            // 10 .사용후 생성한 DB 관련 객체는 close 메서드 호출
            if(rs != null)
            {
                try {
                    rs.close();
                } catch(Exception e)
                {
                    e.printStackTrace();
                }              
            }
           
            if(ps != null)
            {
                try {
                    ps.close();
                } catch(Exception e)
                {
                    e.printStackTrace();
                }              
            }
           
            if(conn != null)
            {
                try {
                    conn.close();  
                } catch(Exception e)
                {
                    e.printStackTrace();
                }              
            }
        }
       
       
        return wo;
               
    }
}