칠리설탕의 it
PreparedStatement와 Statement의 차이점! 본문
자바에서 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 |