- EntityManagerFactory는 하나만 생성해서 애플리케이션 전체에서 공유한다.
- EntityManager는 쓰레드간 공유하지 x(사용하고 버린다)
- JPA의 모든 데이터 변경은 트랜잭션 안에서 실행한다.
준영속상태(detach) : 영속성 컨텍스트에서 빠진 상태
em.clear() : 1차캐시 다 지움. 테스트할 때 많이 쓰인다.
영속성 컨텍스트(엔티티를 영구 저장하는 환경)의 이점
- 1차 캐시
- 동일성(identity) 보장
- 트랜잭션을 지원하는 쓰기 지연
- 변경 감지(Dirty Checking)
- 지연 로딩(Lazy Loading)
같은 트랜잭션 내에서는 동일성 보장한다.
@Test
public void testMember() throws Exception {
// given
Member member = new Member("memberA");
Member savedMember = memberJpaRepository.save(member);
Member findMember = memberJpaRepository.find(savedMember.getId());
assertThat(findMember.getId()).isEqualTo(member.getId());
assertThat(findMember.getUsername()).isEqualTo(member.getUsername());
assertThat(findMember).isEqualTo(member);
위의 코드에서 member와 findMember == 비교시 true 출력 ( 같은 트랜잭션 내에 있어서.)
'Java > JPA' 카테고리의 다른 글
@MappedSuperclass (0) | 2023.11.17 |
---|---|
상속관계 테이블 설계 전략 (0) | 2023.11.17 |
연관관계 매핑(양방향) (0) | 2023.11.15 |
연관관계 매핑(단방향) (0) | 2023.11.15 |
JPA 도메인분석설계 @Entity (0) | 2023.11.09 |