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

주호세님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

회원 기능 테스트

em.persist 관련 질문입니다.

21.09.27 13:57 작성

·

209

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
여기에 질문 내용을 남겨주세요.
 
안녕하세요 항상 수준 높은 강의에 감사드립니다.
몇 가지 의문점이 생겨서 질문하고자 작성하게 되었습니다.
test에서 @Transactional 어노테이션이 롤백을 하신다고 강의에서 말씀하셨는데, 궁금한 점은 em.persist를 한 시점에서는 영속화 한 객체에 대해서 id 값은 영속성 컨텍스트에서 관리되면서 자동으로 부여되는건가요? db 에 isnert 하기 전부터 이미 id 값이 부여되서 관리되고 있는지 궁금합니다. 감사합니다.

답변 1

0

OMG님의 프로필 이미지

2021. 09. 27. 22:13

안녕하세요. 주호세님, 공식 서포터즈 OMG입니다.

Q) 영속성 컨텍스트에서 관리되면서 자동으로 부여되는건가요? db 에 isnert 하기 전부터 이미 id 값이 부여되서 관리되고 있는지 궁금합니다.

 

A) 영속성컨텍스트에 관리되는 객체는 Id가 필수로 존재해야합니다. 관리가 되기 전에 식별자 값이 존재해야겠죠?

 

em.persist() 순간에 기본키 자동생성 전략을 시퀀스로 하였을 경우, 시퀀스 값을 조회하여 id필드에 넣어줍니다.

 

 

관련하여 영한님의 답변과 참고하면 도움이 될 정리글 링크 첨부합니다.

 

참고:

https://www.inflearn.com/questions/265896

https://coding-start.tistory.com/71

 

감사합니다.