325.17. PostgreSQL 사례
JdbcAggregationRepository
에서 사용하는 최적화 잠금에 문제가 있을 수 있는 특수 데이터베이스가 있습니다. PostgreSQL은 데이터 무결성 위반 예외 ( SQLState 23505)의 경우 연결을 유효하지 않은 것으로 표시합니다. 이렇게 하면 중첩 트랜잭션 내에서 연결을 효과적으로 사용할 수 없게 됩니다.This makes the connection effectively unavailable within nested transaction. 자세한 내용은 이 문서에서 확인할 수 있습니다.
org.apache.camel.processor.aggregate.jdbc.PostgresAggregationRepository
은 JdbcAggregationRepository
을 확장하고 특수 INSERT를 사용합니다. ON CONFLICT ...
문에서 낙관적 잠금 동작을 제공합니다.
이 문은 (기본 집계 테이블 정의)입니다.
INSERT INTO aggregation (id, exchange) values (?, ?) ON CONFLICT DO NOTHING
INSERT INTO aggregation (id, exchange) values (?, ?) ON CONFLICT DO NOTHING
자세한 내용은 PostgreSQL 설명서에서 확인할 수 있습니다.
이 절을 사용하면 java.sql.PreparedStatement.executeUpdate()
호출은 SQLState=23505를 사용하여 SQLException을 throw하는 대신 0
을 반환합니다. 추가 처리는 일반 JdbcAggregationRepository
과 정확히 동일하지만 PostgreSQL 연결을 유효하지 않은 것으로 표시하지 않습니다.