작성한 JPQL을 실행하기 위한 쿼리 객체.
차이점
TypedQuery
: 변환 타입 명확하게 지정 가능Query
: 변환 타입 명확하게 지정 불가능TypedQuery 사용 예시
@Autowired
private EntityManager em;
@BeforeEach
public void insertData(){
Person person = Person.builder()
.name("이름1")
.age(18)
.address("주소1")
.build();
Person person2 = Person.builder()
.name("이름2")
.age(19)
.address("주소2 ")
.build();
em.persist(person);
em.persist(person2);
}
@Test
@DisplayName("JPQL 연습01")
public void exam01(){
String jpql = "SELECT p FROM Person AS p";
TypedQuery<Person> query = em.createQuery(jpql,Person.class);
List<Person> datas = query.getResultList();
for(Person data : datas){
System.out.println(data);
}
}
Query 사용 예시
public void exam02(){
String jpql = "SELECT p.name, p.age FROM Person p WHERE num BETWEEN :from AND :to";
Query query = em.createQuery(jpql);
query.setParameter("from",1);
query.setParameter("to",2);
List<Object[]> datas = query.getResultList();
datas.stream().flatMap(Arrays::stream).map(o->o.toString())
.forEach(System.out::println);
}