프로그래밍/Spring

[ JPA ] persist 와 id값

Yanoo 2022. 1. 9. 02:20
728x90
반응형

의문이 생겼다. persist는 영속성 컨텍스트에 올리는 것으로 알고 있는데,

어떻게 id값을 제대로 지정할까? 즉, 테이블에 이미 데이터가 1개 존재한다고 했을 때,

Team team = new Team();
team.setName("TeamA");
em.persist(team);

Member member = new Member();
member.setUsername("member1");
em.persist(member);

System.out.println(team.getId());

여기서 getId 값이 2로 출력되는 것을 알 수 있다.

즉 영속성 컨텍스트에만 올리는 것으로 알고있지만 DB의 값이 한 개 존재한다는 것을 알고있다는 뜻

왜 일까?

 

생각해보면 영속성 컨텍스트에 값을 올릴 때 pk 값이 필요한데 그 때 제대로된 값을 지정하는게 맞긴한다.

즉 영속성 컨텍스트에 넣기전에 DB에서 확인하고 맞는 pk 값을 지정해서 영속성 컨텍스트에 넣게 된다.

 

관련된 자료는, https://dundung.tistory.com/220

 

JPA, EntityManager와 persist 관련 알게 된 사실

JPA 학습을 하다가 의문이 든 내용과 알게 된 사실을 정리하고자 한다. JPA의 EntityManager 객체에서 find 메서드를 호출하던 중 의문이 생겼다.🤔 의문이 생겼던 코드를 살펴보자. (학습 테스트기에

dundung.tistory.com

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

 

영속성 컨텍스트 및 flush에 대한 궁금증 입니다. - 인프런 | 질문 & 답변

안녕하세요. 강의 잘 보고 있습니다~ 다름이아니라 개념이 좀 안잡히는 부분이 있어서요..   em.persist(entity)를 호출하면 entity를 영속성 컨텍스트에 저장한다고 알고 있습니다. 1. 그럼 persist를 호

www.inflearn.com

여기에서 참고가 됐다.

728x90
반응형