• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

PreparedStatement 인터페이스 관련 질문.

23.06.29 14:55 작성 23.06.29 17:37 수정 조회수 267

0

정말 기초적인 질문 일 수도 있지만 질문해 봅니다.

JDBC의 이해 MemberRepositoryV0 - 회원 등록 부분에서

public class MemberRepositoryV0 {

public Member save(Member member) throws SQLException {

String sql = "insert into member(member_id, money) values(?, ?)";

Connection con = null;

PreparedStatement pstmt = null;

try {

con = getConnection();

pstmt = con.prepareStatement(sql);

pstmt.setString(1, member.getMemberId());

pstmt.setInt(2, member.getMoney());

pstmt.executeUpdate();

return member;

} catch (SQLException e) {

log.error("db error", e); throw e;

} finally { close(con, pstmt, null);

}

}

위 코드를 보면 PreparedStatement는 아래 사진의 인터페이스로 알고 있습니다.

 

PreparedStatement.JPG

상세 동작이 구현되어 있지 않은 인터페이스 상태인데 위 코드에서 pstmt.executeUpdate();가 동작되는 것에 대해서 동작 원리가 맞는지 궁금합니다.

 

제가 이해한 것으로는 PreparedStatement pstmt 값 -> 사용하는 SQL Driver에서 가져가서 SQL에 맞게 변환 및 적용하는 것으로 이해 했는데 맞나요?

답변 1

답변을 작성해보세요.

0

David님의 프로필

David

2023.06.29

안녕하세요. 불타는학구열님, 공식 서포터즈 David입니다.

PreparedStatement pstmt에 할당되는 구현체는 pstmt = con.prepareStatement(sql);에서 결정됩니다. 따라서, 해당 구문에서 반환된 구현체를 통해 구현된 executeUpdate 메서드가 실행됩니다.

PreparedStatement는 SQL 문을 실행하기 위한 객체를 생성하고 관리하는 책임을 가지고 있습니다.

감사합니다.