일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- initialDelay
- 매핑정보가없는필드
- 데이터베이스 방언
- Transaction not successfully started
- org.apache.ibatis.binding.BindingException
- 네이버로그인API
- Invalid bound statement (not found)
- @Table
- 무상태프로토콜
- anyMatch
- gitrevert
- SpringBoot
- Git
- ERROR TYPE : org.apache.ibatis.binding.BindingException
- gitreset
- fixedDelay
- JPA
- KAKAOLOGINAPI
- 김영한JPA
- RFC723x
- HTTPMESSAGE
- 멱등활용
- 캐쉬가능
- http
- @Entity
- 네이버 연결된 서비스
- 자바ORM표준프로그래밍
- HTTP3
- hibernate.dialect
- DB방언
Archives
- Today
- Total
twocowsong
엔티티의 생명주기 본문
깃허브 정리 URL : https://github.com/sWineTake/jpa.git
엔티티에는 4가지 상태가 존재합니다.
- 비영속 : 영속성 컨텍스트와 전혀 관계가 없는 상태
- 영속 : 영속성 컨텍스트에 저장된 상태
- 준영속 : 영속성 컨텍스트에 저장되었다가 분리된 상태
- 삭제 : 삭제된 상태
비영속
(New) 엔티티 객체를 생성했으며 지금은 순수한 객체 상태이며 아직 저장하지 않았습니다.
따라서 영속성 컨텍스트나 DB와는 전혀 관련이 없습니다.
이것을 비영속 상태라고 합니다. 코드는 아래와 같습니다.
// 객체를 생성한 상태(비영속)
Member member = new Member();
member.setId("member_id_1");
member.setUsername("홍길동");
영속
(Managed) 엔티티 매니저를 통해서 엔티티를 영속성 컨텍스트에 저장했습니다.
이렇게 영속성 컨텍스트가 관리하는 엔티티를 영속 상태라고 합니다.
em.persist(member);
이제 회원 엔티티는 비영속 상태에서 영속 상태가 되었습니다.
결국 영속 상태라는 것은 영속성 컨텍스트에 의해 관리된다는 뜻입니다.
그리고 em.find()나 JPQL을 사용해서 조회한 엔티티 영속성 컨텍스트가 관리하는 영속 상태입니다.
준영속
영속성 컨텍스트가 관리하던 영속 상태의 엔티티를 관리하지않으면 준영속 상태가 됩니다.
특정 엔티티를 준영속 상태로 만들려면 em.detach()를 호출하면 됩니다.
em.close()를 호출해서 영속성 컨텍스트를 닫거나 em.clear()를 호출해서 영속성 컨텍스트를 초기화해도 영속성 컨텍스트가 관리하던 영속 상태의 엔티티는 준영속 상태가 됩니다.
// 회원 엔티티를 영속성 컨텍스트에 분리하여 준영속상태로 만들게됩니다.
em.detach(member);
삭제
엔티티를 영속성 컨텍스트와 DB에서 삭제합니다.
// 객체를 삭제한 상태(삭제)
em.remove(member);
'IT > JPA' 카테고리의 다른 글
엔티티 컨텍스트의 1차 캐시 (0) | 2022.05.02 |
---|---|
영속성 컨텍스트의 특징 (0) | 2022.05.01 |
영속성 컨테스트 (0) | 2022.05.01 |
EntityManagerFactory와 EntityManager (0) | 2022.04.30 |
JPQL (0) | 2022.04.29 |