본문 바로가기
IT/spring

스프링 DAO(Data Access Object) 클래스

by 뉴코딩맨 2023. 6. 16.
스프링 프레임워크에서 DAO(Data Access Object) 클래스는 데이터베이스와의 상호작용을 담당하는 클래스입니다. 이 클래스는 데이터의 영속성(persistence)을 관리하며, 데이터베이스에 대한 CRUD(Create, Read, Update, Delete) 작업을 수행합니다. 스프링 DAO 클래스의 역할과 구현 방법에 대해 자세히 알아보고, 예시를 통해 설명하겠습니다.
 
 

DAO 클래스의 역할

DAO 클래스의 주요 역할은 데이터베이스와의 상호작용을 추상화하는 것입니다. DAO 클래스는 데이터베이스 연결, SQL 쿼리 실행, 결과 처리 등을 담당합니다. 이를 통해 비즈니스 로직과 데이터 액세스를 분리하여 애플리케이션의 유지보수성과 확장성을 향상시킵니다.
 
 

DAO 클래스의 구현 방법

스프링에서 DAO 클래스를 구현하는 방법은 다양합니다. 주로 인터페이스를 정의하고, 이를 구현하는 클래스를 작성합니다. 인터페이스는 DAO 클래스의 메서드를 선언하고, 구현 클래스는 해당 메서드를 실제로 구현합니다. 이를 통해 스프링의 의존성 주입(Dependency Injection)을 활용하여 DAO 객체를 다른 컴포넌트에 주입할 수 있습니다.
 
public interface UserDao {
    User findById(int id);
    List<User> findAll();
    void save(User user);
    void update(User user);
    void delete(int id);
}

@Repository
public class UserDaoImpl implements UserDao {
	// ...
}
 
위의 예시에서는 UserDao 인터페이스를 정의하고, UserDaoImpl 클래스에서 해당 인터페이스를 구현합니다. UserDaoImpl 클래스에는 데이터베이스와의 상호작용을 위한 실제 구현이 포함됩니다. @Repository 애노테이션은 스프링이 해당 클래스를 빈으로 관리하도록 지정하는 역할을 합니다.
 
 

DAO 클래스의 예시

다음은 스프링 DAO 클래스의 예시입니다.
 
@Repository
public class UserDaoImpl implements UserDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public User findById(int id) {
        String sql = "SELECT * FROM users WHERE id = ?";
        return jdbcTemplate.queryForObject(sql, new Object[]{id}, new UserMapper());
    }

    // 나머지 메서드 구현 생략
}

public class UserMapper implements RowMapper<User> {
    @Override
    public User mapRow(ResultSet rs, int rowNum) throws SQLException {
        User user = new User();
        user.setId(rs.getInt("id"));
        user.setName(rs.getString("name"));
        user.setEmail(rs.getString("email"));
        // ...
        return user;
    }
}
 
위의 예시에서는 UserDaoImpl 클래스가 UserDao 인터페이스를 구현하고 있습니다. JdbcTemplate은 스프링에서 제공하는 JDBC(Java Database Connectivity) 프레임워크로, 데이터베이스와의 상호작용을 단순화하고 편리하게 수행할 수 있도록 도와줍니다. UserDaoImpl 클래스는 jdbcTemplate를 사용하여 SQL 쿼리를 실행하고, 결과를 UserMapper 클래스를 통해 매핑합니다.
 
 

결론

스프링 DAO 클래스는 데이터베이스와의 상호작용을 추상화하고, 애플리케이션에서 데이터 액세스 로직을 분리하는 역할을 합니다. 인터페이스와 구현 클래스를 사용하여 스프링의 의존성 주입을 활용하면 코드의 유지보수성과 확장성을 향상시킬 수 있습니다. DAO 클래스를 효과적으로 구현하면 데이터베이스와의 상호작용을 간편하게 처리할 수 있으며, 애플리케이션의 데이터 관리에 도움을 줄 수 있습니다.
 

'IT > spring' 카테고리의 다른 글

스프링 서비스(service) 인터페이스  (0) 2023.06.16
스프링 Value Object(VO) 클래스  (0) 2023.06.16
스프링 @Resource  (0) 2023.06.15
스프링 @Qualifier  (0) 2023.06.15
스프링 의존성 주입(Dependency Injection) 설정  (0) 2023.06.15

댓글