작성
·
250
0
Member member = new Member();
member.setAge(10);
member.setUsername("홍길동");
em.persist(member);
em.flush();
em.clear();
List<Member> memberList = em.createQuery("select m from Member m").getResultList();
Member findMember = memberList.get(0);
findMember.setAge(20);
답변 1
0
1. flush를 하게 되면 영속성 컨텍스트에 저장된 데이터를 commit 하게 됩니다.
이때, DB에 쿼리를 날려 member 정보를 저장하게 됩니다. 콘솔창을 보면 insert 쿼리가 나가는 걸 확인할 수 있습니다.
1차 캐시에 이미 member가 저장이 되어 있으니 clear를 통해 모두 비워줍니다.
2. 위에서 member 정보가 DB에 저장이 되었으니 이제 DB에서 조회가 가능합니다.
em.flush() 와 em.clear()가 무엇인지 찾아 보시면 바로 이해가 되실 것 같아요.
직접 메서드를 하나씩 실행해 보고 확인해 보시길 추천드립니다!