엔티티 생명주기

쪼경·2021년 7월 2일
0

비영속 (new/transient) 영속성 컨텍스트와 전혀 관계가 없는 새로운 상태
=> 객체 생성'만'한 상태
영속 (managed) 영속성 컨텍스트에 관리되는 상태
=> 영속성 컨텍스트에 저장된 상태 / 영속상태가 되었다고해서 DB에 쿼리가 바로 날아가지 않는다.
준영속 (detached) 영속성 컨텍스트에 저장되었다가 분리된 상태
=> 영속성 컨텍스트에서 지운 상태
삭제 (removed) 삭제된 상태
=> DB에서도 삭제를 요청한 상태

비영속과 준영속의 차이는 PersistenceContext 에 넣고 안넣고의 차이가 있음

비영속 상태 : PK인 no은 그냥 0
준영속 상태 : PK인 no에 값이 들어감 (@Gennrati...) => auto-increment 때문에 값이 들어감

PK가 늘 존재하게 됨. 영속성 컨텍스트에 들어간 순간 PK가 지정되기 때문!

예시)

p1 = (0,"aa",10);
p2 = (0,"bb",10);
p3 = (0,"cc",10);

em.persist(p1);
em.persist(p2);
em.persist(p3);

em.detach(p1);
tr.commit();

==

persist가 되는 순가 PK값은 결정 되었기 때문에 detach가 되도 PK값은 변하지 않는다.

profile
[개발자] Lv.1

0개의 댓글