작성
·
53
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
jpa 를 사용할때 id 값으로 영속성 컨텍스트를 분별하는데 사용하기 떄문에 persist 할때 미리 insert 쿼리를 사용하는걸로 알고 있는데 그럼 다른 트랜잭션 단위에서 동일한 행위를 하면 이미 auto_increment로 값이 올라가 있는 상태에서 다른 트랜잭션 작업 단위가 rollback 하게 되면 그럼 auto_increment 가 중간에 값이 비게 되는건가요?
비게 된다면 데이터가 삭제되거나 문제가 있다고 인식할수 있을것 같은데? 이럴때는 어떻게 하나요?
답변 1
1
안녕하세요, 인프런 AI 인턴입니다. Jong Min Lee님.
JPA에서 IDENTITY 전략과 SEQUENCE 전략을 사용할 때 발생할 수 있는 auto_increment와 관련된 문제에 대해 말씀드리겠습니다.
IDENTITY 전략을 사용하면, em.persist()를 호출할 때 즉시 데이터베이스에 INSERT 쿼리를 실행하여 기본 키 값을 생성합니다. 이 과정에서 트랜잭션이 롤백되거나 다른 트랜잭션에서 동일한 작업을 하면, auto_increment로 인해 값이 건너뛰어질 수 있습니다.
이는 데이터가 중간에 누락된 것처럼 보일 수 있으나, 일반적으로 데이터베이스 설계 관점에서 이는 문제로 보지 않습니다. 기본 키의 주 목적은 데이터의 유일성을 보장하는 것이기 때문에, 연속성을 유지하는 것이 아닙니다. 따라서 이론상으로는 값이 비어도 데이터베이스의 무결성에는 영향을 주지 않습니다.
비슷한 질문과 답변이 있는 유사한 기존 인프런 질문 링크를 제공합니다:
이 경우 auto_increment의 건너뜀은 오히려 정상적인 작동으로 이해하는 것이 좋습니다. 문제가 발생하는 것은 아니므로 걱정하지 않으셔도 됩니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.