07. 기술면접 - 데이터베이스 - Statement와 PrepareStatement
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다
Statement 와 PreparedStatement
SQL 을 실행할 수 있는 객체입니다
Statement
1. 단일로 사용될 때 빠른 속도를 지닙니다.
2. 쿼리에 인자를 부여할 수 없습니다.
3. 매번 컴파일을 수행해야 합니다.
PreparedStatement
1. 쿼리에 인자를 부여할 수 있습니다.
2. 처음 프리컴파일 된 후, 이후에는 컴파일을 수행하지 않습니다.
3. 여러번 수행될 때 빠른 속도를 지닙니다. (동일한 쿼리문을 조금씩 바꿔서 여러번 실행해야 할 때 좋다)
과정
1. 준비(Prepare) : 먼저 애플리케이션은 문의(Query) 틀을 만들고 이를 DBMS 로 보낸다. 특정값은 지정하지 않은 채로 남겨진다
INSERT INTO products(name, age) VALUES(?, ?);
2. 그 다음, DBMS 는 문의 틀을 컴파일하며(최적화 및 변환) 아직 실행하지 않고 결과만 저장한다
3. 실행(Execute): 나중에 애플리케이션이 문 틀의 변수에 값(바인드)을 지정하면 DBMS는 (결과를 반환할 수 도 있는)
문을 실행한다. 애플리케이션은 여러 값으로 원하는 횟수만큼 문을 실행할 수 있다. 위의 예에서
첫 번째 변수로 'bike', 두 번째 변수로 '20'을 지정한다
Statement 와 PreparedStatement 와 차이
매번 컴파일 하는 지 한 번만 컴파일하는 지를 차이라고 보는 데, 바로 캐시(cache) 사용 여부 라고 보면 된다
Statement 는 위의 3단계 과정을 매번 거치지만, PreparedStatement 는 1번만 거치고, 캐시로 저장하고 있어
재사용하여 성능에 좋다 (아래 참고)
속도 차이
'∞. 기술 면접 > 4. 데이터베이스' 카테고리의 다른 글
10. 기술면접 - 데이터 베이스 - 옵티마이저 (Optimizer) (0) | 2021.10.18 |
---|---|
09. 기술면접 - 데이터베이스 - 효과적인 쿼리 저장 (0) | 2021.10.17 |
06. 기술면접 - 데이터베이스 - 인덱스 (Index) (0) | 2021.10.17 |
Spring Mybatis SQL Injection (0) | 2021.10.16 |
05. 기술 면접 - 데이터베이스 - SQL 인젝션 (0) | 2021.10.15 |
댓글
이 글 공유하기
다른 글
-
10. 기술면접 - 데이터 베이스 - 옵티마이저 (Optimizer)
10. 기술면접 - 데이터 베이스 - 옵티마이저 (Optimizer)
2021.10.18 -
09. 기술면접 - 데이터베이스 - 효과적인 쿼리 저장
09. 기술면접 - 데이터베이스 - 효과적인 쿼리 저장
2021.10.17 -
06. 기술면접 - 데이터베이스 - 인덱스 (Index)
06. 기술면접 - 데이터베이스 - 인덱스 (Index)
2021.10.17 -
Spring Mybatis SQL Injection
Spring Mybatis SQL Injection
2021.10.16