Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

칠리설탕의 it

PreparedStatement와 Statement의 차이점! 본문

JAVA & JDBC/Study

PreparedStatement와 Statement의 차이점!

chillisugar 2024. 5. 7. 21:16

자바에서 SQL문을 실행시키는 방법은 대표적으로 2가지 인터페이스를 사용하는 방법이 있습니다.

첫번째는 Statement인터페이스사용하는 방법과 두번째는 PreparedStatement 인터페이스 사용

 

그러면 저 2개의 인터페이스 차이점은 무엇일까??

 

Statement인터페이스의 작동원리를 살펴보겠습니다.

 

1. Query작성
 Query는 SQL문법을 따라야하며, 문자열로 구성되야합니다. 
 데이터베이스에 전달될 명령어를 설정하는 것 입니다.


2. Statement 생성
    ● 'Connection'객체를 이용하여 'Statement'객체를 생성해줍니다.


3. Query실행
 생성된 'Statement'객체의 메소드 중 'executeQuery'와 'executeUpdate' 메소드를 이용하여 Query를 데이터베이스에  전송하고 실행합니다. 
  'executeQuery'는 Select문을 실행하고 결과집합을 반환하면 'executeUpdate'는 Insert, Update, Delete등의 Query를 실행하여 실행된 Query를 통해 영향을 받은 행의 수가 반환이 됩니다.


4. 결과처리
 'executeQuery'를 사용할 경우 결과값은 'ResultSet'객체에 저장되며 이를 통해 데이터를 가져와서 처리 할 수 있습니다.
 'executeUpdate'는 데이터를 가져오는 것이 아니기에 'ResultSet'객체에 저장이 되지 않습니다.  'executeUpdate'의 반환값은 int형이며 이 값을 통해 작업의 성공여부를 판단하거나 얼마나 많은 행이 수정되었는지 확인 할 수 있습니다.


5. Statement 닫기

 

 

'PreparedStatement'인터페이스의 작동원리를 살펴 보기전에 'PreparedStatement'가 어떠한 역할을 하는지 미리 알아보겠습니다.

'PreparedStatement'에서 이름에서 먼저 알수 있듯이 미리 준비하는 Statement라는 것을 유추할수 있습니다. 결국 SQL Query를 실행하기 이전에 미리 컴파일하고 그 후에 매개변수를 설정하여 여러번 실행 시킬수 있는 기능을 제공하는 것입니다.

 

이제 PreparedStatement인터페이스의 작동원리를 살펴보겠습니다.

1. Query작성 및 컴파일
 'PreparedStatement'는 Query를 문자열로 작성을 하며 동시에 해당 Query를 미리 컴파일 합니다.
 이때 Query내부에 동적으로 사용될 값을 나타내기 위해 매개변수를 사용합니다.
ex) String query = "Select * from People where peoplename = ?";


2. 매개변수 설정
 set...메소드를 이용하여 Query문 안에 존재하는 매개변수에 들어갈 값을 설정합니다.  여기서 ...에 들어갈 값은 데이터 타입에 따라 setString, setInt등 여러가지로 변환될 수 있습니다.


3. Query실행
● 'executeQuery'와 'executeUpdate' 메소드를 이용하여 미리 컴파일한 Query를 실행합니다. 
  'executeQuery'는 Select문을 실행하고 결과집합을 반환하면 'executeUpdate'는 Insert, Update, Delete등의 Query를 실행하여 실행된 Query를 통해 영향을 받은 행의 수가 반환이 됩니다.


4. 결과처리
● 'executeQuery'를 사용할 경우 결과값은 'ResultSet'객체에 저장되며 이를 통해 데이터를 가져와서 처리 할 수 있습니다.
● 'executeUpdate'는 데이터를 가져오는 것이 아니기에 'ResultSet'객체에 저장이 되지 않습니다.  'executeUpdate'의 반환값은 int형이며 이 값을 통해 작업의 성공여부를 판단하거나 얼마나 많은 행이 수정되었는지 확인 할 수 있습니다.


5. Statement 닫기

 

 

이렇게 'Statement' 인터페이스와 P'reparedStatement' 인터페이스의 동작원리에 대해 알아봤는데 어떨때 어떤 인터페이스를 사용해야 할지 감이 오시나요??

 

'Statement' 인터페이스를 사용할 경우

 정적인 Query

 실행시간에 Query가 변경되지 않을 경우

 특정 Query를 한번만 사용할 경우

 

 

'PreparedStatement' 인터페이스를 사용할 경우

 적인 Query

 사용자로부터 입력을 받아서 Query를 실행해야 하는 경우

 Query와 매개변수 설정이 분리되어 있기에 가독성이 중요한 경우

 

 

 

이렇게 Statement와 PreparedStatement의 차이에 대해 알아봤습니다!!

감사합니다~~!

'JAVA & JDBC > Study' 카테고리의 다른 글

JTable안에 Checkbox 배치  (1) 2024.09.08
JLabel을 통해 문자열과 이미지 출력하기  (0) 2024.05.07
Eclipse를 통해 jar파일 만들기  (0) 2024.05.07
Gui 폰트 및 색상 바꾸는 법  (0) 2024.05.07
JTabel 만들기  (0) 2024.05.07