본문 바로가기

컴퓨터공학/Java

CS> Statement에 대해서 PreparedStatement 의 이점은?

PreparedStatement

자바에서는 데이터베이스 핸들링을 하기 위해서 jdbc(java database conectivity) 라는 개념으로 java.sql 패키지 다수 인터페이스를 정의하고 있다.    

그 중에서 일반적인 sql query 를 수행하기 위해 디자인된 인터페이스로 statement가 있다.

하지만 performance 측면 에서는 preparedStatement가 앞서기 때문에 같은 쿼리를 값만 다르게 수행하는 경우 statement보다는 preparedStatement 선호한다.

 

execute parameterized query :

preaparedStatement는 statement의 sub interface이다. 

즉 statement의 성질을 이어받은 상태에서 런타임시 파라미터를 sql 쿼리로 넘기는 방식이다.

따라서 preparedStatement는 쿼리와 함께 pre compile이 되어 있다.

 

improve performance :

같은 쿼리를 파라미터만 넘겨서 처리하다 보니 특정 sql 쿼리를 여러번 실행해야할 경우 statement보다 퍼포먼스가 훨씬 좋다. 

 

better for security :

sql injection과 같은 해킹의 경우 sql의 커맨드를 이용해서 시스템에 잡입 시도한다.

prepqredStatement는 쿼리를 직접 수행하는 게 아니라 파라미터값만 넘기기 때문에 보안에서 더 안정적이다. 

 

CallableStatement

sub interface of PreparedStatement

call the stored procedures or functions

자바 영역에서 쿼리를 실행하는게 아니라 데이터베이스에 이미 정의되어 있는 stored procedure나 function을 호출하는 statement이다.

 

business logic on the database

실질적인 비즈니스 로직은 stored procedures나 functions에 저장해놓고 자바에서는 단순히 호출하는 구조이다. 

어플리케이션 레이어에서는 부담이 적어서 퍼포먼스가 좋다. 

사용하기 위해서는 데이터베이스에 있는 stored procedures나 fucntion을 제대로 알고 있어야 한다. 

 

improve performance

 

 

 

정리

statement는 쿼리를 수행하기 위해 사용될 수 있지만 퍼포먼스 측면에서 떨어지기 때문에 1회성을 가지는 DDL(Create, Alter, Drop, Truncate) 을 쓸 때 사용한다. 

preparedStatement는 파라미터로 쿼리를 처리해서 퍼포먼스가 좋아 특정 쿼리를 여러 번 사용할 때 사용한다.

Faster than statement

better in security aspect

callableStatement trigger stored procedures or function in DB