• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

영속성 컨텍스트 select관련해서 질문드립니다!

23.03.25 18:14 작성 23.03.25 18:22 수정 조회수 185

0

EntityManager가 tx종료와 동시에 지워진다고 하셨는데,

만약 dml쿼리없이 단순 select만 하게되어서

EntityTransaction tx = em.getTransaction();
tx.begin();

위의 코드없이 select만 여러번 실행하게될 경우 em가 생겼다 지워졌다 생겼다 지워졌다가 반복된다고 보면 될까요??

위와같이 이해를 하여서, 위의 코드를 지우고 아래의 코드를 실행하면, 하나의 트랜잭션으로 묶지 않았기에 두번의 쿼리가 나갈것이라 예상했지만, 쿼리가 한번만 나가는것 같아서요

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

답변 1

답변을 작성해보세요.

1

OMG님의 프로필

OMG

2023.03.25

안녕하세요. 개발자태주님, 공식 서포터즈 OMG입니다.
.

트랜잭션 없이 단순조회(읽기)는 가능하고, entitymanager가 생겼다가 지워졌다가하지는 않습니다.

애플리케이션이 종료되거나, 명시적으로 entitymanager를 close지 않았다면 1차캐시에 저장되어 쿼리가 한번만 발생합니다.


.
감사합니다.