JPA/JPQL

JPA를 활용하여 쿼리 날리기

수달하나 2021. 7. 20. 22:07

JPA는 다양한 쿼리 방법을 지원한다.

  • JPQL (대부분 이 방식을 사용)
  • JPA Criteria
  • QueryDSL
  • 네이티브 SQL
  • JDBC API 직접사용, MyBatis, SpringJdbcTemplate 함께 사용

 

JPQL

가장 단순한 조회 방법

  • EntityManager.find()
  • 객체 그래프 탐색 a.get()
  • 기타 등등 ...

하지만 특별한 조건을 포함한 데이터를 알고 싶다면?

EntityManagerFactory emf = Persistence.createEntityManagerFactory("Test");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();

try{

	List<Member> memberList = em.createQuery(
    					"select m From Member as m where m.username like %kim%"
    					, Member.class).getResultList();
	tx.commit();
    
}catch (Exception e){

	tx.rollback();
	e.printStackTrace();
    
}finally {

	em.close();
    
}

emf.close();

위와 같은 과정을 통해서 쿼리를 날려줘야 한다.

(username에 kim을 포함하고 있는 모든 멤버들을 조회 한다.)