본문 바로가기
IT개발/JAVA

Connection, Statement, PrepareStatement(JDBC/Java/백엔드개발)

by 시간기억자 2024. 11. 19.
반응형

1. Connection

개념

  • Connection 객체는 데이터베이스와의 연결을 나타냅니다. 이 객체를 통해 SQL 문을 실행하고, 트랜잭션을 관리하며, 데이터베이스와의 세션을 유지합니다.

주요 기능

  • 데이터베이스 연결: DriverManager를 통해 데이터베이스에 연결된 후, Connection 객체를 얻습니다.
  • 트랜잭션 관리: 여러 SQL 문을 하나의 단위로 묶어 원자성을 보장합니다. commit()과 rollback() 메소드를 사용하여 트랜잭션을 관리할 수 있습니다.
  • 자원 해제: 데이터베이스 연결이 더 이상 필요하지 않을 때 close() 메소드를 호출하여 자원을 해제합니다.

 

2. Statement

개념

  • Statement 객체는 SQL 문을 데이터베이스에 전달하고 실행하는 데 사용됩니다. 주로 정적 SQL 쿼리를 실행할 때 사용합니다.

주요 기능

  • SQL 실행: executeQuery() 메소드를 사용하여 SELECT 쿼리를 실행하고, executeUpdate() 메소드를 사용하여 INSERT, UPDATE, DELETE 쿼리를 실행합니다.
  • 결과 처리: SQL 쿼리의 결과를 ResultSet 객체로 반환받아 데이터를 처리할 수 있습니다.

단점

  • SQL 인젝션 취약성: 사용자가 입력한 값을 직접 SQL 쿼리에 포함시키면 SQL 인젝션 공격에 노출될 수 있습니다.

 

3. PreparedStatement

개념

  • PreparedStatement 객체는 미리 컴파일된 SQL 쿼리를 실행하는 데 사용됩니다. SQL 쿼리를 작성한 후, 파라미터를 바인딩하여 실행할 수 있습니다.

주요 기능

  • 파라미터화된 쿼리: SQL 쿼리 내에서 ? 기호를 사용하여 파라미터를 정의하고, setXXX() 메소드를 사용하여 해당 파라미터에 값을 설정합니다.
  • SQL 인젝션 방지: 파라미터를 바인딩하기 때문에 SQL 인젝션 공격에 대한 저항력이 높습니다.
  • 성능 향상: 동일한 SQL 쿼리를 여러 번 실행할 때, 쿼리를 미리 컴파일하므로 성능이 향상됩니다.

 

요약

  • Connection: 데이터베이스와의 연결을 관리하는 객체로, SQL 문 실행과 트랜잭션 관리를 담당합니다.
  • Statement: 정적 SQL 쿼리를 실행하는 데 사용되며, SQL 인젝션에 취약합니다.
  • PreparedStatement: 미리 컴파일된 SQL 쿼리를 실행하며, 파라미터화된 쿼리를 통해 SQL 인젝션을 방지하고 성능을 향상시킵니다.

 

이 세 가지 객체는 JDBC에서 데이터베이스와의 상호작용을 효율적으로 관리하는 데 중요한 역할을 합니다. 각 객체의 특징과 사용 목적을 이해하면, JDBC를 통한 데이터베이스 작업을 보다 안전하고 효율적으로 수행할 수 있습니다.



반응형

댓글