JPQL이란 테이블이 아닌 객체를 대상으로 검색하는 객체지향 쿼리다
ex)
List<Member> result = em.createQuery("select m from Member m where m.userName like '%kim%'",
Member.class).getResultList();
for (Member member : result) {
System.out.println("member = " + member);
}
===========================================================================
Member member = new Member();
member.setUsername("member1");
member.setAge(10);
em.persist(member);
TypedQuery<Member> query1 = em.createQuery("select m from Member m", Member.class);
TypedQuery<String> query2 = em.createQuery("select m.username from Member m",String.class);
Query query3 = em.createQuery("select m.username,m.age from Member m");
여러개 - getResultList()는 결과가 없어도 빈 리스트 가져옴
TypedQuery<Member> query1 = em.createQuery("select m from Member m", Member.class);
List<Member> resultList = query1.getResultList();
for (Member member1 : resultList) {
System.out.println("member1 = " + member1);
}
1개 - getSingleResult() 는 조심해야함. 정확하게 결과가 1개 나와야함
TypedQuery<Member> query1 = em.createQuery("select m from Member m where m.id=1", Member.class);
Member singleResult = query1.getSingleResult();
System.out.println("singleResult = " + singleResult.getUsername());
파라미터를 넘기기 - ' : ' 를 사용하고 체이닝기법을 사용하는게 깔끔하다.
Member member = new Member();
member.setUsername("member1");
member.setAge(10);
em.persist(member);
Member singleResult = em.createQuery("select m from Member m where m.username=:username", Member.class)
.setParameter("username", "member1").getSingleResult();
System.out.println("singleResult = " + singleResult.getAge());
'Developer' 카테고리의 다른 글
[JPA]QueryDSL - 동적쿼리 실무사용권장 (0) | 2020.09.21 |
---|---|
[JPA]Criteria (0) | 2020.09.21 |
[JPA]테이블에 컬렉션을 저장한다-@ElementCollection,@CollectionTable (1) | 2020.09.20 |
[JPA]@Embeddable 문제점 (0) | 2020.09.20 |
[JPA]공통된거 묶기-@Embedded, @Embeddable (0) | 2020.09.20 |