작성
·
33
0
@Override
public Optional<Item> findById(Long id) {
String sql = "select id, item_name, price, quantity from item where id = :id";
try {
//Map<String, Object> param = Map.of("id", id);
Map<String, Object> param = new HashMap<>();
param.put("id",id);
Item item = template.queryForObject(sql,param,itemRowMapper());
return Optional.of(item);
}catch (EmptyResultDataAccessException e) {
return Optional.empty();
}
}
Map.of를 쓰지않고 그냥 new HashMap을 사용했을때 저런식으로 코드를 짜면 될까요 ?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
네, deoksam님, 코드에서 Map.of
대신 new HashMap<>()
을 사용하시는 것은 완전히 괜찮습니다.
Map.of
는 Java 9부터 도입된, 불변의 작은 맵을 생성하기 위한 간편한 방법입니다.
반면 HashMap
은 가변적이며, 크기가 변경될 수 있는 맵을 생성합니다.
따라서 param
맵에 추가적으로 값을 넣거나 변경할 가능성이 있을 경우 HashMap
을 사용하는 것이 좋습니다.
질문하신 코드에서는 매개변수 id
를 param
에 넣은 후 쿼리 실행에만 사용하므로 두 방법 중 어느 것을 사용해도 동작하는 데 문제가 없으나, 추후에 param
에 추가적인 요소를 넣을 경우를 고려하여 HashMap
을 사용하는 것이 유리할 수 있습니다.