[ Java /JDBC ] RowMapper / ResultSetExtractor의 차이점

2024. 1. 28. 13:42· LANGUAGE/└ Java

 

RowMapperResultSetExtractor는 스프링 프레임워크에서 JDBC의 결과를 매핑하는 데 사용되는 인터페이스이다. 

 

RowMapper : 목록용 도구

   · 각 행(row)을 객체로 매핑하는 데 사용된다.

   · 각 행의 데이터를 객체의 필드에 매핑하여 리스트 혹은 단일 객체로 반환

   · 주로 한 행의 데이터를 한 객체에 매핑할 때 사용

 


ResultSetExtractor : 상세용 도구 

   · RowMapper와는 달리 결과 집합 전체를 처리하며, 각 행의 데이터를 개별 객체로 매핑하는 방식이 아닙니다.

   · 전체 결과 집합을 처리하고 나면 마지막에 원하는 결과를 반환

   · 주로 복잡한 매핑 로직이 필요하거나 여러 행을 처리하는데 사용


[RowMapper 사용 예]

public class EmployeeMapper implements RowMapper<Employee> {
    @Override
    public Employee mapRow(ResultSet resultSet, int rowNum) throws SQLException {
    	// Employee 객체 생성
        Employee employee = new Employee();
        // 필드에 ResultSet에서 추출한 데이터 매핑
        employee.setId(resultSet.getInt("id"));
        employee.setName(resultSet.getString("name"));
        employee.setDepartment(resultSet.getString("department"));
        return employee;
    }
}

 

 

[ResultSetExtractor 사용 예]

public class EmployeeExtractor implements ResultSetExtractor<List<Employee>> {
    @Override
    public List<Employee> extractData(ResultSet resultSet) throws SQLException, DataAccessException {
        // Employee 객체 리스트 생성
        List<Employee> employees = new ArrayList<>();
        // ResultSet에서 데이터 추출하여 Employee 객체로 매핑 후 리스트에 추가
        while (resultSet.next()) {
            Employee employee = new Employee();
            employee.setId(resultSet.getInt("id"));
            employee.setName(resultSet.getString("name"));
            employee.setDepartment(resultSet.getString("department"));
            employees.add(employee);
        }
        return employees;
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

개인 공부 기록용입니다:)

728x90

'· LANGUAGE > └ Java' 카테고리의 다른 글

[ Java / Spring ] @RequestParam  (0) 2024.02.07
[ Java ] DTO / DAO 이해  (0) 2024.01.29
[ Java ] 삼항연산자(Ternary Operator)  (0) 2024.01.27
[ Java / Database ] DTO 이해 실습  (0) 2024.01.26
[ Java ] Collection - List  (0) 2024.01.25