달력

08

« 2010/08 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  

'PreparedStatement'에 해당되는 글 1

  1. 2007/02/09 PreparedStatement와 Statement
2007/02/09 20:34

PreparedStatement와 Statement Define Java/JAVA/LIB2007/02/09 20:34

크리에이티브 커먼즈 라이선스
Creative Commons License

PreparedStatement와 Statement


JDBC를 사용한다면 PreparedStatement(이하 pstmt)와 Statement(stmt)를 사용하게 될것이다.
과연 이둘의 차이점은 무엇일까?
필자도 JDBC쪽을 처음 공부할 때 도대체 "째 둘은 이름은 비슷하고 하는일도 비슷한데 왜 나누어져 있을까?" 이런 의문이 들었었다.

우선 두 객체를 사용하여 Result를 가져오는 방법이다.

소스보기

위의 두 코드는 userId가 admin 정보를 가져오는 것이다.
위 코드(코드1)와 아래 코드(코드2) 가장 큰 차이점을 본다면 userId값을 대입할때에 있다.
만약 코드1과 코드2에서 조회해야될 사용자가 100명이라고 한다면 어떻게 될까?

소스 보기


이렇게 소스를 본다면 과연 어느쪽이 더 자원 낭비가 심하게 될까? 당연히 코드2번이 더 심하게 된다.
그 이유는 1번 코드는 미리 쿼리를 준비해 두고 userId값만 교환하여 쿼리를 재활용 하고 있는 반면에 코드2는 그렇지 않기 때문이다.
이렇게 본다면 PreparedStatement Class가 참 좋은 것 같다. 그리고 PreparedStatement는 인젝션을 어느정도 막을 수 있는 코드가 삽입되어 있다.
이렇게만 본다면 PreparedStatement 만 사용해야 겠다고 생각하는 사람들이 많을 것이다.

하지만 PreparedStatement는 분명 Statement 인터페이스를 구현하고 있으면서 또 다른 기능을 포함하고 있다.
이것은 Statement보단 조금더 무겁다는 것을 의미한다.

그렇다면 Statement와 PreparedStatement 속도는 어느정도 차이가 날까?
Java Programming With Oracle JDBC라는 책을 보면 도날드는 오라클 드라이버를 사용하여 데이터를 삽입 할 때 PreparedStatement가 65번 이상 시행 시켰을 때 누적시간 차가
PreparedStatement가 더 작아 진다고 설명되어 있다.

어떤 클래스를 사용하는것은 개발자의 몫이다. 하지만 그 차이점을 알고 사용한다면 조금이나마 더 나은 결과를 나을것이다.

'Define Java > JAVA/LIB' 카테고리의 다른 글

Jakarta Commons Lang 1. 살펴보기  (0) 2007/05/15
PreparedStatement와 Statement  (0) 2007/02/09
Posted by DefineJAVA