그알것 — 그럼에도 알아야 할 것들
홈질문커뮤니티
로그인
그알것 — 그럼에도 알아야 할 것들

Service

  • 홈
  • 소개
  • 질문
  • 커뮤니티

My

  • 내 워크스페이스
  • 저장한 질문
  • 작성한 답변

Policy

  • 이용약관
  • 개인정보처리방침
  • 문의

© 2026 그알것 · What Still Matters

질문 목록Database
Database

Statement와 PreparedStatement의 차이는 무엇인가요?

실무5/5
설계2/5
인간4/5
기초3/5

면접관의 질문 의도

문법 차이만 외운 사람과, 값·식별자 경계와 바인딩의 한계까지 보는 사람을 가르는 질문이다. 동적 ORDER BY 같은 후속을 던졌을 때 "바인딩으로 풀자"고 답하면 깊이가 얕다고 판단한다.

큐레이션 답변

학습 자료

Statement는 SQL 문자열을 그대로 드라이버에 넘겨 실행하는 방식이라, 사용자 입력이 쿼리 구조와 한 덩어리로 섞인다. PreparedStatement는 쿼리 구조를 먼저 컴파일해 두고 값만 플레이스홀더로 바인딩하므로, 값이 절대 쿼리 토큰으로 해석되지 않는다. 같은 쿼리를 반복 실행할 때 파싱·플랜을 재사용할 수 있다는 점도 따라온다. 둘의 차이는 "값이 쿼리 구조에 끼어들 수 있는가"이고, 실무 기본 선택은 PreparedStatement다.

좋은 답변 구조

  1. 01Statement와 PreparedStatement의 실행 방식 차이를 "값과 쿼리 구조의 분리 여부"로 정의한다
  2. 02보안 효과의 본질이 입력 검증이 아니라 값이 쿼리 토큰으로 해석되지 않는다는 점임을 설명한다
  3. 03반복 실행 시 파싱·플랜 재사용 이점과 일회성 쿼리에서 오히려 손해일 수 있는 한계를 같이 짚는다
  4. 04테이블명·정렬 방향 같은 식별자는 바인딩이 안 되므로 화이트리스트로 끊어야 한다는 선택 기준으로 마무리한다

자주 실수하는 포인트

PreparedStatement만 쓰면 인젝션이 끝난다고 보고 동적 ORDER BY나 IN 절을 문자열로 결합한다
보안 효과를 "특수문자 이스케이프"로 설명하고 값이 쿼리 토큰으로 파싱되지 않는다는 본질을 놓친다
일회성 쿼리에도 PreparedStatement가 항상 빠르다고 단정한다
statement cache가 자동으로 작동한다고 믿고 드라이버·풀 설정을 확인하지 않는다

실무 맥락

  • 사용자 입력으로 검색·로그인을 처리하는 JDBC·매퍼 코드를 다루는 환경
  • 보안 점검에서 raw 쿼리 결합 패턴을 찾아내고 바인딩으로 옮겨야 하는 레거시 개선 상황
  • 정렬 컬럼·정렬 방향·IN 절 길이가 런타임에 바뀌는 동적 쿼리 화면
  • 같은 쿼리가 초당 수백 번 반복되는 배치·조회 경로에서 statement cache 효과를 봐야 하는 환경

본인 경험에 녹이는 힌트

문자열 결합 SQL을 PreparedStatement로 옮긴 경험이 있다면 어떤 패턴이 가장 자주 걸렸는지로 답을 시작할 수 있다

동적 ORDER BY나 IN 절을 화이트리스트·길이 제한으로 막아본 경험이 있다면 바인딩의 한계를 자기 사례로 풀 수 있다

보안 점검 도구나 코드 리뷰에서 인젝션 패턴을 찾아본 경험이 있다면 "값·구조 분리" 기준을 자기 언어로 설명할 수 있다

ORM을 쓰면서도 raw 쿼리를 섞어 쓴 적이 있다면 그 지점에서 어떻게 검증 경계를 그었는지 연결할 수 있다

커뮤니티 인기 답변

전체 0개

아직 공개된 답변이 없어요. 첫 공개 답변을 남겨보세요.

관련 꼬리 질문

Q1정렬 컬럼이나 정렬 방향을 동적으로 받아야 한다면 바인딩이 안 되는데 어떻게 안전하게 구현하나요
Q2ORM이나 매퍼를 쓰는데도 이 원칙이 여전히 중요한 이유는 무엇이고 어디서 깨지나요
Q3PreparedStatement가 항상 더 빠른가요, 그렇지 않다면 어떤 조건에서 손해인가요
Q4statement cache가 동작하려면 드라이버와 풀 설정에서 무엇을 확인해야 하나요
아직 답을 쓰지 않았어요.
큐레이션 답변과 다른 사람 답변을 보고, 자기 언어로 답을 정리해보면 학습 효과가 가장 큽니다.
목차
  • 01면접관의 질문 의도
  • 02큐레이션 답변
  • 03좋은 답변 구조
  • 04자주 실수하는 포인트
  • 05실무 맥락
  • 06본인 경험에 녹이는 힌트
  • 07커뮤니티 인기 답변준비중
  • 08관련 꼬리 질문