Why use Prepared Statement instead of Statement?

위에 구문을 Statement 객체를 사용하여 만들면 다음처럼 구현된다.

String sql = String sql = "SELECT * from car, car_category CC, copy, produce WHERE car.callnum =" + num;
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);

이렇게 구현할 경우 쿼리문을 수행할때마다 매번 컴파일을 하기 때문에 성능 저하

But 실행되는 SQL문을 확인가능

 

Prepared Statement 경우

 

컴파일이 미리 되어있기 때문에 Statement에 비해 좋은 성능

특수문자를 자동으로 파싱해주기 때문에 SQL injection 같은 공격을 막을 수 있음

"?" 부분에만 변화를 주어 쿼리문을 수행하므로 실행되는 SQL문 파악하기 어려울 수 있다.

 

Prepared Statement가 사용되면 좋은 경우

 

1. 사용자 입력하여 쿼리문을 실행할 경우 

=> 특수 문자가 들어와도 알아서 파싱하므로 에러 방지 가능

2. 쿼리 반복 수행 작업일 경우

Prepared Statement는 구문을 캐시에 담아 재사용 하기 때문에 반복적으로 동일한 쿼리를 사용한다면 DB에 훨씬 적은 부하를 주며 성능도 좋아진다.

 

'Language' 카테고리의 다른 글

[Python] What is Duck typing?  (1) 2023.02.06
[Python] What is Dynamic typing?  (2) 2023.01.30
[C 언어] How to read file in C  (2) 2023.01.18
[COBOL] What is COBOL ?  (0) 2023.01.10
[Java] How to connect SQL with JAVA  (0) 2023.01.01

+ Recent posts