본문 바로가기

IT 개념

JSP, PreparedStatement 와 Statement 의 차이

Statement 와 PreparedStatement 는 SQL을 실행할 수 있는 객체인데,

JSP 를 배우면서 어쩔 때는 Statement 를 쓰고 PreparedStatement 를 쓰는지 궁금해졌습니다.

또 PreparedStatement를 쓸때는

PreparedStatement pstmt = conn.prepareStatement(sql);

을 한 후

pstmt.setString(1, mVo.getUserid()); 등등으로 인자를 찍을 수 있었는데,

Statement는 불가능 하더군요..

그래서 찾아보았습니다.

https://mozi.tistory.com/29

[JAVA] PreparedStatement 와 Statement 차이점 알아보기

Statement 와 PreparedStatement SQL 을 실행할 수 있는 객체입니다. Statement 1. 단일로 사용될 때 빠른 속도를 지닙니다. 2. 쿼리에 인자를 부여할 수 없습니다. 3. 매번 컴파일을 수행해야 합니다. PreparedSt..

mozi.tistory.com

1. Statement

1) 단일로 사용될 때 빠른 속도를 지닙니다.

2) 쿼리에 인자를 부여할 수 없습니다. ( pstmt.setString 같이 못한다는 의미인 것 같습니다.)

3) 매번 컴파일을 수행해야 합니다.

2. PreparedStatement

1) 쿼리에 인자를 부여할 수 있습니다.

2) 처음 프리컴파일 된 후, 이후에는 컴파일을 수행하지 않습니다. (한번만 컴파일하면되나봅니다.)

3) 여러 번 수행될 때 빠른 속도를 지닙니다.

https://devbox.tistory.com/entry/Comporison

[Comporison] PreparedStatement 와 Statement

PreparedStatement 와 Statement * PreparedStatement 와 Statement의 가장 큰 차이점은 캐시(cache) 사용여부이다. 1) 쿼리 문장 분석 2) 컴파일 3) 실행 Statement를 사용하면 매번 쿼리를 수행할 때마다 1) ~..

devbox.tistory.com

즉, 동일한 쿼리를 반복적으로 수행한다면 PreparedStatement 가 DB에 훨씬 적은 부하를 주며, 성능도 좋다는 것입니다.

3. PreparedStatement 를 사용해야 하는 경우

1) 사용자 입력값으로 쿼리를 생성하는 경우

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

 

※ 각 DB 마다 SQL 캐싱할 수 있는 한계가 있기 때문에 정작 성능상 캐싱되어야 할 쿼리가 그렇지 않은 쿼리 때문에 캐싱이 안될 수 있기 때문에 꼭 필요한 문장만 PreparedStatement를 쓰는 것을 권고한다고 합니다.

4. Statement 를 반드시 사용해야 하는 경우

1) Dynamic SQL을 사용할 경우 (? 저는 처음보는 용어이네요 ㅠㅠ)