테스트 코드로 기본 문법을 배워보자.

기본 세팅

@SpringBootTest
@Transactional
public class QuerydslBasicTest {

	@Autowired
	EntityManager em;

	@BeforeEach
	public void before() {
		Team teamA = new Team("teamA");
		Team teamB = new Team("teamB");

		em.persist(teamA);
		em.persist(teamB);

		Member member1 = new Member("member1", 10, teamA);
		Member member2 = new Member("member2", 20, teamA);
		Member member3 = new Member("member3", 30, teamB);
		Member member4 = new Member("member4", 40, teamB);

		em.persist(member1);
		em.persist(member2);
		em.persist(member3);
		em.persist(member4);
	}
}
@Test
public void startJPQL() {
	// member1을 찾아라.
	Member findMember = em.createQuery("select m from Member m where m.username = :username", Member.class)
			.setParameter("username", "member1")
			.getSingleResult();

	assertThat(findMember.getUsername()).isEqualTo("member1");
}

@Test
public void startQuerydsl() {
	// member1을 찾아라.
	JPAQueryFactory query = new JPAQueryFactory(em);
	QMember m = new QMember("m");

	Member findMember = query
			.select(m)
			.from(m)
			.where(m.username.eq("member1"))
			.fetchOne();

	assertThat(findMember.getUsername()).isEqualTo("member1");
}

QueryFactory는 필드로 빼도 된다.

JPAQueryFactory queryFactory;

@BeforeEach
public void before() {
	queryFactory = new JPAQueryFactory(em);
  // ...