JPA는 다양한 쿼리 방법을 지원
JPQL / JPA Criteria / QueryDSL / native SQL / JDBC API 직접 사용, MyBatis, SpringJdbcTemplate 함께 사용
List<Member> result = em.createQuery(
"select m from Member m where m.age > 18",
Member.class
).getResultList();

CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Member> query = cb.createQuery(Member.class);
Root<Member> m = query.from(Member.class);
CriteriaQuery<Member> cq = query.select(m).where(cb.equal(m.get("username"), "kim"));
em.createQuery(cq).getResultList();

//JPQL : select m from Member m where m.age > 18
JPAFactoryQuery query = new JPAQueryFactory(em);
QMember m = QMember.member;
List<Member> list =
query.selectFrom(m)
.where(m.age.gt(10))
.orderBy(m.name.desc())
.fetch();
em.createNativeQuery("select MEMBER_ID, city, street, zipcode, USERNAME from MEMBER")
.getResultList();
