Life Developer
인생 개발자
[JPA]JPQL

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());

 

 

 

 

  Comments,     Trackbacks