JDBC 삼형제 간단히 비교하기 (Statement & PreparedStatement & CallableStatement)

JJuuuunn·2024년 1월 30일
0
특성 Statement PreparedStatement CallableStatement
쿼리 유형 간단하고 매개변수 없음 매개변수 사용 매개변수 사용, 저장 프로시저
성능 반복 실행에 적합하지 않을 수 있음 매개변수를 사용하여 반복 실행에 효율적 저장 프로시저에 특히 효율적
가독성 SQL 쿼리가 Java 코드에 포함 매개변수를 사용하여 쿼리가 가독성 향상 매개변수를 사용하여 쿼리, 저장 프로시저 지원으로 가독성 향상
사용 사례 간단한 쿼리 매개변수를 사용한 반복 쿼리 저장 프로시저 호출
주의사항 SQL 인젝션과 같은 보안에 취약
같은 쿼리 반복 실행시 성능이 좋지 않음
매번 쿼리를 컴파일 해야하므로 복잡한 쿼리에 대해 성능이 안좋을 수 있음 사용하기 복잡함
데이터베이스의 의존성이 높아져 db 성능에 부하가 높아질 수 있음
테이블에 왜 css style이 적용이 안되지...
Statement 사용 예시

    String sql = "SELECT * FROM Employees";
    
    Statement stmt = conn.createStatement();
    
    ResultSet rs = stmt.executeQuery(sql);

PreparedStatement 사용 예시

    String sql = "SELECT * FROM Employees WHERE id = ?";
    PreparedStatement pstmt = conn.prepareStatement(sql);
    
    pstmt.setInt(1, 100);
    
    ResultSet rs = pstmt.executeQuery();

CallableStatement 사용 예시

    String sql = "{call PROCEDURE(?, ?)}";
    
    CallableStatement cstm = conn.prepareCall(sql);
    cstm.setInt(1, 100);
    cstm.regiterOutParameter(2, Types.VARCHAR);
    
    cstm.execute();
    
    String outputValue = cstm.getString(2);


Statement, PreparedStatement, CallableStatement는 모두 JDBC를 사용하여 데이터베이스에 쿼리를 실행하는 데 사용되는 인터페이스로 고유한 특성과 가지므로 프로젝트의 요구 사항에 따라 적절한 인터페이스를 선택하는 것이 중요하다 생각이 됨.
profile
포기하지않겠습니다.

0개의 댓글