본문 바로가기
카테고리 없음

jpa 준영속 영속 비영속

by 흰색남자 2022. 7. 23.

User라는 Entity가 있다고 가정하자.

DB에 데이터가 없을때 영속, 준영속 상태의 객체는 아무것도 없다.

처음 시작은 비영속 상태로 시작한다.

객체생성(new User())을 하면 비영속 상태의 객체가 생성된다. // 말이 비영속이지 데이터베이스에 없는 객체임.

비영속 상태의 객체를 save하면 DB에 객체가 저장되고, transactional 상태에서는 영속성 컨택스트에 존재하면서 영속 객체로 바뀐다.

 

transactional scope를 벗어나게되면, detached 객체(준영속) 객체가되고, 이 객체를 다시 save하면 데이터베이스에 저장된다. << 이 말은 즉슨, save하지 않으면 DB에 저장되지 않고, 데이터는 소멸된다.

 

 

Transtional scope를 유지하려면 클래스에 @Transactional 어노테이션을 넣어주던가, 메소드에 눈치껏 @Transactional을 넣어주자.