자바에서 **KeyHolder
**는 데이터베이스에서 생성된 키 값을 보관하는 데 사용되는 인터페이스입니다. 주로 데이터베이스의 INSERT 작업을 수행한 후에 자동으로 생성된 키 값을 얻기 위해 사용됩니다.
일반적으로 데이터베이스에서 자동으로 생성된 키는 테이블의 기본 키(primary key) 또는 고유 제약 조건(unique constraint)을 가진 열에 대해 자동 증가(Auto Increment)하거나 시퀀스(Sequence)를 사용하여 생성됩니다. 이러한 자동 생성된 키 값을 애플리케이션에서 사용하려면 해당 값을 얻어와야 합니다.
KeyHolder
인터페이스는 생성된 키 값을 보관하는 역할을 하며, getKey()
메서드를 통해 해당 키 값을 얻을 수 있습니다. 대표적으로 스프링 프레임워크에서 KeyHolder
인터페이스를 사용하여 자동 생성된 키 값을 반환받을 수 있습니다.
예를 들어, 스프링 JDBC를 사용하여 데이터베이스에 INSERT 작업을 수행하고 자동으로 생성된 키 값을 얻기 위해 **KeyHolder
**를 사용할 수 있습니다. 다음은 스프링 JDBC에서의 KeyHolder
사용 예시입니다:
KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(connection -> {
PreparedStatement ps = connection.prepareStatement("INSERT INTO my_table (column1, column2) VALUES (?, ?)", Statement.RETURN_GENERATED_KEYS);
ps.setString(1, "value1");
ps.setString(2, "value2");
return ps;
}, keyHolder);
// 자동으로 생성된 키 값을 얻어옴
Number generatedKey = keyHolder.getKey();
위의 예시에서 **GeneratedKeyHolder
**는 KeyHolder
인터페이스의 구현체입니다. jdbcTemplate.update()
메서드를 사용하여 INSERT 작업을 수행하고, Statement.RETURN_GENERATED_KEYS
옵션을 사용하여 자동 생성된 키 값을 반환받을 수 있습니다. 생성된 키 값은 getKey()
메서드를 통해 얻어올 수 있습니다.
**KeyHolder
**를 사용하면 데이터베이스에서 자동으로 생성된 키 값을 애플리케이션에서 활용할 수 있으며, 주로 데이터베이스 연동 작업에서 사용됩니다.