인프런 커뮤니티 질문&답변

deoksam님의 프로필 이미지
deoksam

작성한 질문수

ptional<Item> findById 질문

작성

·

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을 사용하는 것이 좋습니다.
질문하신 코드에서는 매개변수 idparam에 넣은 후 쿼리 실행에만 사용하므로 두 방법 중 어느 것을 사용해도 동작하는 데 문제가 없으나, 추후에 param에 추가적인 요소를 넣을 경우를 고려하여 HashMap을 사용하는 것이 유리할 수 있습니다.

deoksam님의 프로필 이미지
deoksam

작성한 질문수

질문하기