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

박민성님의 프로필 이미지
박민성

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

KeyHolder 질문

작성

·

127

0

@Override
public Item save(Item item) {
    String sql = "insert into item (item_name, price, quantity) " +
            "values(:itemName, :price, :quantity)";

    SqlParameterSource param = new BeanPropertySqlParameterSource(item);

    KeyHolder keyHolder = new GeneratedKeyHolder();
    template.update(sql, param, keyHolder);

    long key = keyHolder.getKey().longValue();
    item.setId(key);
    return item;
}

 

KeyHolder같은경우 id를 내부에서 직접 구성해줘야하기 때문에 쓰는거라고 알고있는데 서버를 열어서 추가를 해줄때마다 숫자가 증가되는걸 볼수있었습니다. 숫자가 증가되는건 코드에서 자체적으로 해주는건가요?

항상 답변감사드립니다.

답변 1

0

안녕하세요. 박민성님, 공식 서포터즈 y2gcoder입니다.

KeyHolder는 주로 DB에서 자동 생성해준 키를 가져오기 위해 사용합니다!

서버에서 데이터를 추가할 때마다 키의 숫자가 증가하는 것은, 데이터베이스가 자동 생성된 키를 관리하는 방식 때문입니다! 이는 코드 자체적으로 수행되는 것이 아니라, 데이터베이스 설정에 따라 자동으로 증가되는 값입니다.

감사합니다.

박민성님의 프로필 이미지
박민성
질문자

데이터베이스 설정에 따라 자동으로 증가되는 코드가 내부 자체적으로 있는건가요?

데이터베이스가 자동으로 증가하는 키(예: 자동 증가 ID)를 관리합니다!
KeyHolder는 이러한 Database가 자동 생성된 키 값을 애플리케이션 코드에서 사용할 수 있게 해줍니다.
데이터베이스에 데이터를 추가할 때, 해당 키 값은 데이터베이스의 설정(예: AUTO_INCREMENT 속성)에 의해 자동으로 관리되며, 이 값을 가져오기 위해 KeyHolder와 같은 메커니즘이 사용됩니다.

박민성님의 프로필 이미지
박민성

작성한 질문수

질문하기