✅ 결론 먼저 정리하면:
**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 사용.
'Spring & Backend' 카테고리의 다른 글
| 자바스크립트에서 "0.1 + 0.2 === 0.3"의 실행 결과에 대해 설명해주세요 (2) | 2025.07.28 |
|---|---|
| 문득, 롬복의 등장과 함께 많이 사라진 @Autowired (2) | 2025.07.27 |
| 자동 스레드 생성 시스템에서 API 요청이 많아 Rate Limit에 걸릴 위험 회피 방안 (6) | 2025.07.26 |
| 항해플러스 백엔드 Lite 1기 솔직 후기[2025년7월27일 기준] (19) | 2025.07.26 |
| TCP 3-way-handshake와 4-way-handshake (6) | 2025.07.25 |
