복붙노트

[SPRING] Spring JDBC batchUpdate를 사용할 때 생성 된 키를 가져 오는 방법이 있습니까?

SPRING

Spring JDBC batchUpdate를 사용할 때 생성 된 키를 가져 오는 방법이 있습니까?

JDBC를 사용하고 있으며 일괄 처리 삽입을 원하지만 다음 라운드 삽입을 위해 생성 된 키가 필요합니다 -이를 수행하기 위해 어쨌든 있습니까?

MapSqlParameterSource [] batchArgs ....

DAL.getNamedParameterTemplate (). batchUpdate ( "INSERT INTO ...", batchArgs);

감사

해결법

  1. ==============================

    1.스프링 프레임 워크 사람들은이 문제에 대한 해결책을 시도했다. 그러나 솔루션이 모든 JDBC 드라이버에서 작동한다는 것을 보장 할 방법이 없다는 것이 명백 해지자 그들은 그 시도를 포기했습니다. 이는 JDBC 스펙이 생성 된 키가 일괄 업데이트 후에 사용 가능하게 보장하지 않기 때문입니다. JDBC 드라이버는이 기능을 자유롭게 구현할 수 있습니다. 경우에 따라 기본 데이터베이스가 생성 된 키를 반환하지 않을 수 있으므로 드라이버가이 기능을 지원할 수 없습니다.

    스프링 프레임 워크 사람들은이 문제에 대한 해결책을 시도했다. 그러나 솔루션이 모든 JDBC 드라이버에서 작동한다는 것을 보장 할 방법이 없다는 것이 명백 해지자 그들은 그 시도를 포기했습니다. 이는 JDBC 스펙이 생성 된 키가 일괄 업데이트 후에 사용 가능하게 보장하지 않기 때문입니다. JDBC 드라이버는이 기능을 자유롭게 구현할 수 있습니다. 경우에 따라 기본 데이터베이스가 생성 된 키를 반환하지 않을 수 있으므로 드라이버가이 기능을 지원할 수 없습니다.

    따라서 JDBC로 직접 작업하는 경우에도 데이터베이스 및 JDBC 드라이버가 생성 된 키를 사용할 수 있는지 확인해야합니다.

    필자는 MySQL 5.0 JDBC 드라이버로 약간의 노력으로이를 달성 할 수 있었지만 이전 버전의 MySQL을 지원해야하기 때문에 프로덕션 애플리케이션에 솔루션을 통합하지 못했음을 기억합니다.

  2. ==============================

    2.db 시퀀스를 사용하여 다음 기본 키 값을 가져 와서 insert 문에서 사용하십시오.

    db 시퀀스를 사용하여 다음 기본 키 값을 가져 와서 insert 문에서 사용하십시오.

  3. from https://stackoverflow.com/questions/2423815/is-there-anyway-to-get-the-generated-keys-when-using-spring-jdbc-batchupdate by cc-by-sa and MIT license