본문 바로가기

JPA

JPA로 CRUD해보기(4) JPQL

실무에서 상황이 꼬이고 꼬이다보면 단순한 CRUD가 아니라 내가 쿼리를 직접 짜야 될 경우도 있다.

이를 위한 것이 JPQL이다. 백문이불여일견!!!! JPQL 실습을 해보도록 하자

 

JPQL 실습해보기

JPA로 CRUD해보기(2) 틀 코드 작성하기 시간에 만들었던 JpaMain.java의 "//CRUD 로직" 부분에 다음과 같이 코드를 작성해보자!!!

List<Member> result = em.createQuery("select m from Member as m", Member.class).getResultList();
for (Member member : result) {
	System.out.println("member.getName() = " + member.getName());
}

 

실행하면 MEMBER 테이블에 있는 행을 모두 가져와 name을 콘솔에 출력하게 된다. 나의 경우 이렇게 3개의 결과가 나왔다.

여기서 코드를 보고 의문점을 가질 수 있다. SQL 중심의 개발을 피하려고 JPA를 쓰는 건데 SQL같은 게 나왔네???
이것은~~~~ 바로 JPQL이라는 것이다. 자, 뭐가 다르냐?
JPQL은 객체를 대상으로 하는 쿼리라고 생각하면 된다.

객체를 대상으로 하는 쿼리인 JPQL을 사용하여 코드를 짜면,
JPQL이 이 쿼리를 SQL로 바꿔준다. 결론적으로 코드가 SQL에 종속적이지 않게 된다는 것이다.

이로써 우리는 필요할 때마다 SQL에 종속되지 않고 쿼리를 짤 수 있게 됐다. SQL중심개발에서 탈출했다는 것이다. ㅎㅎㅎㅎㅎ

JPQL도 공부하면 어렵지 않으니 공부해서 다같이 JPA 마스터가 되어보자!!!!


JPA를 사용해보면서 SQL을 알아서 만들어주는데 강한 매력을 느껴볼 수 있었을 것이라고 생각한다.
또 앞선 시간에 SQL중심의 개발의 단점에 대해 다뤘었는데, 그 단점들이 JPA를 사용하면 극복된다는 것을 알 수 있었을 것이다.

이렇게 요즘 인기 있는 기술 중 하나인 JPA에 대해 가볍게 알아봤다.
참고로 트랜잭션이나 EntityManagerFactory 정도는 SpringBoot를 쓰면 알아서 처리해주기때문에 막상 개발할 때는 신경쓰지 않아도 된다.

그래도 기초를 다져놓는 건 중요하니까~~~~ 원리를 알고 쓰는 거랑 모르고 쓰는 거랑 당연히 차이가 난다 ㅋㅋㅋㅋㅋ
여기까지 오신 분들 너무 수고 많으셨습니다!!!!!

 

참고강의: 배달의 민족 개발팀장 김영한 강사님의 JPA 강의