Life Developer
인생 개발자
[JPA]persist와 1차캐쉬

멤버를 만든다.

 

Member member = new Member();
member.setId(101L);
member.setName("HelloJPA");

 

 

persist를 하면 DB에 바로 저장은 안된다.

영속성 컨텍스트에 저장된다.(commit)해야 db에 전달됨.

아래코드는 AFTER 이후 commit할때 쿼리가 전달되는것이다.


//영속
System.out.println("===BEFORE===");
em.persist(member); //이때 DB에 저장되는것이 아님
System.out.println("===AFTER===");

 

 

find로 멤버를 찾는다. 101L은 PK이다.


Member findMember = em.find(Member.class,101L);

System.out.println("findMember.getId() = " + findMember.getId());
System.out.println("findMember.getName() = " +

 

 

101L이란 PK를 가진 멤버를 2개 만든다.

1은 1차캐쉬에 저장된다.

2를 생성할때 1차캐쉬를 사용한다.

그러므로 둘은 동일하다. 쌍둥이가 아니라 그냥 자기자신임.


Member findMember1 = em.find(Member.class, 101L);
Member findMember2 = em.find(Member.class, 101L); //1차캐시부터 뒤짐.
//일반적으로 1차캐쉬가 크게 도움을 주지 않음

System.out.println("compare 1,2 = "+(findMember1==findMember2));
//1차 캐시때문에 true가 나온다. 엔티티 동일성 보장

'Developer' 카테고리의 다른 글

[JPA]Entity  (0) 2020.09.16
[JPA]영속성과 준영속성 관리, flush  (0) 2020.09.16
[JPA]find, em.createQuery  (0) 2020.09.16
[JPA]첫걸음  (0) 2020.09.16
Controller와 RestController 차이  (0) 2020.09.09
  Comments,     Trackbacks