JDBC 프로그래밍에는 Statement, Prepared Statement, Callable Statement 3가지 유형이 있다. 가장 많이 사용하는 Prepared Statement에 대해 설명하고자 한다.
1. Prepared Statement의 특징 및 장점
JDBC API를 통해 DB 접근 시에 Preapared Statement 또는 Statement를 통하여 로직을 작성한다. Prepared Statement는 Statement와 같은 아래와 같은 특징 및 장점이 있기 때문에 조건문이 바뀌지 않고, 조건값이 바뀌는 경우(캐슁 장점 활용) 사용을 권장한다.
- PreparedStatement는 Statement를 상속받아 구현한 객체임
- SQL statement에 대한 파싱과 컴파일이 필요한데, 사전에 컴파일된 Statement 임
- 성능이 Statement 보다 빠르고, SQL 재사용성이 높음
- setXXX() 메소드를 통해 구현하면, SQL 인젝션 등과 같은 보안 위협 이슈에 보다 안전한 시큐어코딩 가능함
2. Prepared Statement 관련 파라미터
3. 소스 예시
PreparedStatement pstmt; ... pstmt = connection.prepareStatement("INSERT INTO emp (id, name, dept) VALUES (?, ?, ?)"); pstmt.setString(1, emp.getId()); pstmt.setString(2, emp.getName()); pstmt.setString(3, emp.getdept()); pstmt.executeUpdate(); ... |
4. Statement, Callable Statement 예시
Statement stmt; ... String sql = "{call getEmpName (?, ?)}"; stmt = connection.createStatement(sql); stmt.setInt(1, 100); stmt.setString(2, "01"); stmt.execute(); ... |
위의 예제처럼 SQL 문장에 변수값을 포함하여 문자열을 만들어 SQL을 수행한다.
CallableStatement stmt; ... stmt = connection.prepareStatement(); stmt.executeUpdate("INSERT INTO emp (id, name, dept) VALUES ( '" + emp.getId() + "', '" + emp.getName() "', '" + emp.getdept() + "')"); ... |
위의 예제처럼 SQL 문장에 변수값을 포함하여 문자열을 만들어 SQL을 수행한다.
'프로그래밍 > J2EE' 카테고리의 다른 글
[Tips] JDBC 쿼리(Query) 타임아웃 설정 (0) | 2021.09.03 |
---|---|
[정보] HttpServletResponse 객체 (0) | 2021.02.08 |
[정보] HttpServletRequest 객체 (0) | 2021.02.08 |
[정보] SSO 구현 방식 (0) | 2019.01.28 |
[개요] REST 이해 (0) | 2018.01.27 |