• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

최초 테스트에서 질문있습니다!

23.08.02 13:15 작성 조회수 467

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
스프링부트 버전 3.1.2
Querydsl 버전 5.0.0

테스트 코드에서 질문 드릴 것이 있사옵니다.    @Test
    void contextLoads() {
        Hello hello = new Hello();
        em.persist(hello);

        JPAQueryFactory query = new JPAQueryFactory(em);
        QHello qHello = new QHello("h");

        System.out.println("========START");
        Hello result = query
                .selectFrom(qHello)
                .fetchOne();
        System.out.println("========END");
        assertThat(result).isEqualTo(hello);
    }

같은 트랙잭션에서 영속성 컨텍스트의 데이터를 얻어올 테니 result와 hello가 같은 게 당연한데요. querydsl로 select하는 부분에서 insert와 select query가 나가더라고요.

========START
2023-08-02T13:14:13.697+09:00 DEBUG 2696 --- [    Test worker] org.hibernate.SQL                        : 
    insert 
    into
        hello
        (id) 
    values
        (?)
2023-08-02T13:14:13.699+09:00  INFO 2696 --- [    Test worker] p6spy                                    : #1690949653699 | took 0ms | statement | connection 4| url jdbc:h2:tcp://localhost/~/datajpa
insert into hello (id) values (?)
insert into hello (id) values (1);
2023-08-02T13:14:13.717+09:00 DEBUG 2696 --- [    Test worker] org.hibernate.SQL                        : 
    select
        h1_0.id 
    from
        hello h1_0
2023-08-02T13:14:13.718+09:00  INFO 2696 --- [    Test worker] p6spy                                    : #1690949653718 | took 0ms | statement | connection 4| url jdbc:h2:tcp://localhost/~/datajpa
select h1_0.id from hello h1_0
select h1_0.id from hello h1_0;
========END

1차 캐시에서 데이터를 가져올텐데 굳이 query가 왜 나가는지 궁금합니다. 1차 캐시가 새로 갱신되었을리도 없고 갱신되어서도 안 된다고 생각했습니다.

답변 1

답변을 작성해보세요.

2

David님의 프로필

David

2023.08.03

안녕하세요. literate_t님, 공식 서포터즈 David입니다.

아래 글 답변을 참고해 주세요:)

https://www.inflearn.com/questions/200857

감사합니다.

literate_t님의 프로필

literate_t

질문자

2023.08.04

해결되었습니다. 감사합니다 :)