초록 스터디 3기 2주차 - JDBC

코코코딩을 합시다·2024년 3월 24일
post-thumbnail

JDBC는 데이터베이스에 접속할 수 있도록 도와주는 자바 API 이다.
JdbcTemplate을 사용하면 이러한 데이터베이스 연동 코드를 좀 더 간결하고 쉽게 작성할 수 있다.
JDBC의 주요 제공 기능은 다음과 같다.

  • SQL문 실행
  • 실행 쿼리 결과 처리
  • 트랜잭션 관리
  • 예외 처리

JDBC의 여러가지 메소드

SELECT 메소드

  • queryForObject

    • queryForObject는 단일 객체 조회 메소드로 두 개의 매개변수를 가지며 첫번째 매개변수는 쿼리문, 두번째 매개변수는 매핑 클래스 타입이다.

      int rowCount = jdbcTemplate.queryForObject("select count(*) from customers", Integer.class); 
      
    • 세 개의 매개변수가 들어갈 수도 있는데, 이때 세번째 매개변수는 쿼리문에 바인딩할 파라미터를 전달한다.

      String lastName = 
      jdbcTemplate.queryForObject("select last_name from customers where id = ?", String.class, id);
      
    • 두번째 매개변수에 RowMapper을 넣어 데이터를 조회할 수 있다.

      Customer customer = jdbcTemplate.queryForObject(
            "select id, first_name, last_name from customers where id = ?",
            (resultSet, rowNum) -> {
                Customer customer = new Customer(
                        resultSet.getLong("id"),
                        resultSet.getString("first_name"),
                        resultSet.getString("last_name")
                );
                return customer;
            }, id);
  • query

    • queryForObject가 단일 객체 조회 메소드였다면 query는 여러 객체를 조회할 수 있다.
    • 두번째 매개변수에 RowMapper를 전달하여 데이터 조회 결과를 매핑한다. RowMapper은 따로 선언하여 사용할 수도 있다.
      List<Customer> customers = jdbcTemplate.query(
            "select id, first_name, last_name from customers",
            (resultSet, rowNum) -> {
                Customer customer = new Customer(
                        resultSet.getLong("id"),
                        resultSet.getString("first_name"),
                        resultSet.getString("last_name")
                );
                return customer;
            });
    • 세번째 매개변수에는 바인딩할 파라미터를 전달할 수 있다.

INSERT, UPDATE, DELETE 메소드

  • Update

    • Update 메소드로 INSERT, UPDATE, DELETE 쿼리문을 수행할 수 있다.
    jdbcTemplate.update("insert into customers (first_name, last_name) values (?,   ?)", 
    customer.getFirstName(), customer.getLastName());
    
    jdbcTemplate.update("delete from customers where id = ?", Long.valueOf(id));
    
  • KeyHolder

    • 기본키(Primary Key)를 가져올 때는 KeyHolder 메소드를 사용한다.
profile
좋아하는 걸로 밥 벌어먹기

0개의 댓글