✅ 결론 먼저 정리하면:

**DB에서 여러 행(row)**을 받을 때는 List (또는 List<Map<String, Object>>)를 보통 사용합니다.

하지만 행(row)마다 컬럼을 키-값으로 다루고 싶을 때는 각 행을 Map 또는 **HashMap**으로 나타냅니다.

그래서 자주 쓰는 구조는:

List<Map<String, Object>> rows = jdbcTemplate.queryForList(sql);



---

💡 언제 List vs HashMap을 쓰는가?

📌 1. List:

여러 개의 데이터 (레코드/행)를 순서 있게 저장할 때.

예: 게시글 목록, 사용자 리스트 등.


List<User> users = userRepository.findAll();

📌 2. HashMap (또는 Map<String, Object>):

하나의 데이터 행을 컬럼명 기준으로 저장할 때.

키: 컬럼 이름, 값: 컬럼 값


Map<String, Object> user = jdbcTemplate.queryForMap("SELECT * FROM users WHERE id = ?", id);


---

✅ 예시로 비교해보기

✔️ 단일 객체 모델로 받을 때

public class User {
    private Long id;
    private String name;
    private int age;
    // getter/setter
}

List<User> userList = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));

✔️ 맵 구조로 받을 때

List<Map<String, Object>> rows = jdbcTemplate.queryForList("SELECT * FROM users");
for (Map<String, Object> row : rows) {
    String name = (String) row.get("name");
    int age = (int) row.get("age");
}


---

🎯 왜 HashMap을 쓸까?

DTO 클래스 없이도 유연하게 쓸 수 있음.

컬럼 개수가 정해지지 않았거나, 동적 SQL을 사용할 때 편리함.



---

🔚 정리

단일 엔티티 클래스로 받을 때는 List<YourClass> 사용.

유연하게 처리하거나 컬럼명이 동적일 경우 List<Map<String, Object>> 혹은 HashMap 사용.





LIST

+ Recent posts