JPQL
- JPQL은 객체지향 쿼리 언어이다. 따라서 테이블을 대상으로 쿼리하지 않고 엔티티 객체를 대상으로 쿼리함
- JPQL은 SQL을 추상화해서 특정 데이터베이스 SQL에 의존하지 않음
- JPQL은 결국 SQL로 변환


TypedQuery<Member> typeQuery = em.createQuery("select m from Member m", Member.class);
// username(String) / age(int) 선택하고자 하는 두 컬럼의 데이터 타입이 달라서 타입을 설정해 줄 수 없음
Query query = em.createQuery("select m.username, m.age from Member m");
그럼 애초에 번거롭지 않게 getResultList()를 사용하면 될거 같은데 왜 굳이 getSingleResult()를 사용할까? 메모리 절약 차원에서?? 리스트 결과를 가져오면 loop를 돌려야 하니까?
이름 기준
Member result = em.createQuery("select m from Member m where m.username = :username", Member.class)
.setParameter("username", "member1")
.getSingleResult();

위치 기준
Member result = em.createQuery("select m from Member m where m.username = ?1", Member.class)
.setParameter(1, "member1")
.getSingleResult();