
JPA에서 가장 중요한 2가지
- 객체와 관계형 데이터 매핑하기
- 영속성 컨텍스트
- 엔티티를 영구 저장하는환경
영속성 컨텍스트(persistence context) - 가장중요
엔티티의 생명주기
- 비영속(new/transient): 영속성 컨텍스트와 전혀 관계가 없는 상태
- ```java Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); //영속 em.persist(member); ```
- 영속(managed): 영속 컨텍스트에 저장된 상태
- 준영속(detached): 영속성 컨텍스트에 저장되었다가 분리된상태
```java
//회원 엔티티를 영속성 컨텍스트에 분리, 준영속 상태
em.detach(member);
// 객체를 삭제한 상태(삭제)
em.remove(member);
```
- 삭제(removed): 삭제된 상태
영속성 컨텍스의 이점
1차 캐시
엔티티 등록
엔티티 매니저는 트랜젝션을 커밋하기 지적까지 데이터베이스에 엔티티를 저장하지 않고 내부 쿼리 저장소에 Insert SQL에 저장된다
transaction.commit()을 날리면 그때 날라간다.
플러시(flush())
영속성 컨텍스트의 변경 내용을 데이터 베이스에 반영한다.
- 변경 감지가 동작해서 영속성 컨텍스트에 있는 모든 엔티티를 스냅샷하고 비교하여 수정된 엔티티를 찾는다.
- 수정된 엔티티 쓰기 지연 SQL저장소에 등록
- 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송
- em.flush()를 직접 호출
- 트랜잭션 커밋시 플러시 자동호출
- JPQL 쿼리 실행시 플러시가 자동 호출
영속성 컨텍스트에 보관된 엔티티를 지운다고 생각하면 안됨, 영속성 컨텍스트의 변경 내용을 데이터베이스에 동기화하는 것이 플러시이다.
준영속
엔티티의 비영속 → 영속 → 삭제 상태 변화에서 영속→ 준영속
1.em.detach(entity): 특정 엔티티만 준영속 상태로 전환한다
- em.clear() 영속성 컨텍스트를 완전히 초기화한다.
- em.close() 영속성 컨텍스트를 종료한다.
JPA에서 가장 중요한 2가지
- 객체와 관계형 데이터 매핑하기
- 영속성 컨텍스트
- 엔티티를 영구 저장하는환경
영속성 컨텍스트(persistence context) - 가장중요
엔티티의 생명주기
- 비영속(new/transient): 영속성 컨텍스트와 전혀 관계가 없는 상태
- ```java Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); //영속 em.persist(member); ```
- 영속(managed): 영속 컨텍스트에 저장된 상태
- 준영속(detached): 영속성 컨텍스트에 저장되었다가 분리된상태
```java
//회원 엔티티를 영속성 컨텍스트에 분리, 준영속 상태
em.detach(member);
// 객체를 삭제한 상태(삭제)
em.remove(member);
```
- 삭제(removed): 삭제된 상태
영속성 컨텍스의 이점
1차 캐시
엔티티 등록
엔티티 매니저는 트랜젝션을 커밋하기 지적까지 데이터베이스에 엔티티를 저장하지 않고 내부 쿼리 저장소에 Insert SQL에 저장된다
transaction.commit()을 날리면 그때 날라간다.
플러시(flush())
영속성 컨텍스트의 변경 내용을 데이터 베이스에 반영한다.
- 변경 감지가 동작해서 영속성 컨텍스트에 있는 모든 엔티티를 스냅샷하고 비교하여 수정된 엔티티를 찾는다.
- 수정된 엔티티 쓰기 지연 SQL저장소에 등록
- 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송
- em.flush()를 직접 호출
- 트랜잭션 커밋시 플러시 자동호출
- JPQL 쿼리 실행시 플러시가 자동 호출
영속성 컨텍스트에 보관된 엔티티를 지운다고 생각하면 안됨, 영속성 컨텍스트의 변경 내용을 데이터베이스에 동기화하는 것이 플러시이다.
준영속
엔티티의 비영속 → 영속 → 삭제 상태 변화에서 영속→ 준영속
1.em.detach(entity): 특정 엔티티만 준영속 상태로 전환한다
- em.clear() 영속성 컨텍스트를 완전히 초기화한다.
- em.close() 영속성 컨텍스트를 종료한다.
- https://www.notion.so/JPA-98cfc379de6f4075a2604cb40be73a2e
'취업 준비 > 실전 JPA' 카테고리의 다른 글
4/29~5/5일까지 목표 (0) | 2023.04.29 |
---|---|
4/17 ~4/23 취준 준비 (0) | 2023.04.17 |
4/13 취준 기록(프로그래머스 개미군단, 모스 부호,가위 바위 보) (0) | 2023.04.13 |
4/12 취준 준비 (1) | 2023.04.12 |
4/9 취준 기록 (JPA) (0) | 2023.04.09 |

JPA에서 가장 중요한 2가지
- 객체와 관계형 데이터 매핑하기
- 영속성 컨텍스트
- 엔티티를 영구 저장하는환경
영속성 컨텍스트(persistence context) - 가장중요
엔티티의 생명주기
- 비영속(new/transient): 영속성 컨텍스트와 전혀 관계가 없는 상태
- ```java Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); //영속 em.persist(member); ```
- 영속(managed): 영속 컨텍스트에 저장된 상태
- 준영속(detached): 영속성 컨텍스트에 저장되었다가 분리된상태
```java
//회원 엔티티를 영속성 컨텍스트에 분리, 준영속 상태
em.detach(member);
// 객체를 삭제한 상태(삭제)
em.remove(member);
```
- 삭제(removed): 삭제된 상태
영속성 컨텍스의 이점
1차 캐시
엔티티 등록
엔티티 매니저는 트랜젝션을 커밋하기 지적까지 데이터베이스에 엔티티를 저장하지 않고 내부 쿼리 저장소에 Insert SQL에 저장된다
transaction.commit()을 날리면 그때 날라간다.
플러시(flush())
영속성 컨텍스트의 변경 내용을 데이터 베이스에 반영한다.
- 변경 감지가 동작해서 영속성 컨텍스트에 있는 모든 엔티티를 스냅샷하고 비교하여 수정된 엔티티를 찾는다.
- 수정된 엔티티 쓰기 지연 SQL저장소에 등록
- 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송
- em.flush()를 직접 호출
- 트랜잭션 커밋시 플러시 자동호출
- JPQL 쿼리 실행시 플러시가 자동 호출
영속성 컨텍스트에 보관된 엔티티를 지운다고 생각하면 안됨, 영속성 컨텍스트의 변경 내용을 데이터베이스에 동기화하는 것이 플러시이다.
준영속
엔티티의 비영속 → 영속 → 삭제 상태 변화에서 영속→ 준영속
1.em.detach(entity): 특정 엔티티만 준영속 상태로 전환한다
- em.clear() 영속성 컨텍스트를 완전히 초기화한다.
- em.close() 영속성 컨텍스트를 종료한다.
JPA에서 가장 중요한 2가지
- 객체와 관계형 데이터 매핑하기
- 영속성 컨텍스트
- 엔티티를 영구 저장하는환경
영속성 컨텍스트(persistence context) - 가장중요
엔티티의 생명주기
- 비영속(new/transient): 영속성 컨텍스트와 전혀 관계가 없는 상태
- ```java Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); //영속 em.persist(member); ```
- 영속(managed): 영속 컨텍스트에 저장된 상태
- 준영속(detached): 영속성 컨텍스트에 저장되었다가 분리된상태
```java
//회원 엔티티를 영속성 컨텍스트에 분리, 준영속 상태
em.detach(member);
// 객체를 삭제한 상태(삭제)
em.remove(member);
```
- 삭제(removed): 삭제된 상태
영속성 컨텍스의 이점
1차 캐시
엔티티 등록
엔티티 매니저는 트랜젝션을 커밋하기 지적까지 데이터베이스에 엔티티를 저장하지 않고 내부 쿼리 저장소에 Insert SQL에 저장된다
transaction.commit()을 날리면 그때 날라간다.
플러시(flush())
영속성 컨텍스트의 변경 내용을 데이터 베이스에 반영한다.
- 변경 감지가 동작해서 영속성 컨텍스트에 있는 모든 엔티티를 스냅샷하고 비교하여 수정된 엔티티를 찾는다.
- 수정된 엔티티 쓰기 지연 SQL저장소에 등록
- 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송
- em.flush()를 직접 호출
- 트랜잭션 커밋시 플러시 자동호출
- JPQL 쿼리 실행시 플러시가 자동 호출
영속성 컨텍스트에 보관된 엔티티를 지운다고 생각하면 안됨, 영속성 컨텍스트의 변경 내용을 데이터베이스에 동기화하는 것이 플러시이다.
준영속
엔티티의 비영속 → 영속 → 삭제 상태 변화에서 영속→ 준영속
1.em.detach(entity): 특정 엔티티만 준영속 상태로 전환한다
- em.clear() 영속성 컨텍스트를 완전히 초기화한다.
- em.close() 영속성 컨텍스트를 종료한다.
- https://www.notion.so/JPA-98cfc379de6f4075a2604cb40be73a2e
'취업 준비 > 실전 JPA' 카테고리의 다른 글
4/29~5/5일까지 목표 (0) | 2023.04.29 |
---|---|
4/17 ~4/23 취준 준비 (0) | 2023.04.17 |
4/13 취준 기록(프로그래머스 개미군단, 모스 부호,가위 바위 보) (0) | 2023.04.13 |
4/12 취준 준비 (1) | 2023.04.12 |
4/9 취준 기록 (JPA) (0) | 2023.04.09 |