DevBoi

[JPA] JPQL 공부 시작하기전에... 본문

Develop/[JPA]

[JPA] JPQL 공부 시작하기전에...

HiSmith 2022. 3. 10. 17:54
반응형

SQL은 데이터 베이스 테이블을 대상으로 쿼리를 하지만

JPQL은 엔티티 객체를 대상으로 쿼리를 한다,.

 

 또한 SQL을 추상화해서, 특정 데이터베이스 SQL에 의존적이지 않다.

 

간단한 예다.

 

 동적 쿼리를 생성하기에는 ibatis와 mybatis가,편하긴 하지만 jpa에서도 장점은 있다.

 

Criteria를 쓰면, 동적 쿼리에 대한 생성이되지만, 실무에서 쓰기에는 유지보수가 말이안된다.

그래서 동적 쿼리는 Criteria보다, QueryDSL로 많이 사용한다고 한다.

QueryDsl 은 오픈소스이다.

 

이 기술은, 자바 처럼 실수로 오타가 나면 디버깅이 바로 표기되기 떄문에 빠르고

동적 쿼리로 생성되기에 겉 형태가 sql과 비슷하여, 눈에 잘들어온다는 장점이 있다.

또한 자바 쿼리라서 재사용 또한 가능하다.

 

jpql을 알아야 querydsl을 사용할수있다.

nativeSql를 사용할수도있고, 

스프링 jdbcTemplate, mybatis를 함께 사용할수도있다.

 

하지만 이렇게 섞어서 사용할때는 영속성 컨텍스트를 적절한 시점에 강제로 플러시할 필요가 있다.

flush는, em.createSql을 할때 자동으로 된다. 즉 jpa관련 기술을 사용할때는 자동 flush 설정이 되어있어서

걱정할필요가 없다.

 

 

 

 

반응형

'Develop > [JPA]' 카테고리의 다른 글

[jpa] 페이징 & 조인 & 쿼리 간략  (0) 2022.03.11
[JPQL] JPQL 시작하기  (0) 2022.03.10
[JPA] 값 타입  (0) 2022.03.10
[JPA] 영속성 전이  (0) 2022.03.07
[JPA] 지연로딩과 즉시로딩  (0) 2022.03.07