728x90

Spring Boot/JPA

    [JPA] JPQL (Java Persistence Query Language)

    JPA는 복잡한 검색 조건을 사용해서 엔티티 객체를 조회할 수 있는 다양한 쿼리 기술을 지원한다. 이번 글에서는 다양한 객체지향 쿼리 중 JPQL에 대해 다룰 것이다. JPQL이란? JPQL은 엔티티 객체를 조회하는 객체지향 쿼리다. 따라서 테이블을 대상으로 쿼리하는 것이 아니라 엔티티 객체를 대상으로 쿼리한다. 문법은 SQL과 유사하며 간결하다. JPQL은 결국 SQL로 변환된다. 또한 JPQL은 SQL을 추상화해서 특정 데이터베이스에 의존하지 않는다는 특징이 있다. 데이터베이스 방언만 변경하면 JPQL을 수정하지 않아도 데이터베이스를 변경할 수 있다. 기본 문법과 쿼리 API JPQL도 SQL과 비슷하게 SELECT, UPDATE, DELETE문을 사용할 수 있다. 아래의 JPQL 문법을 보면 전체 ..

    [JPA] JPA 변경 감지와 병합(merge)

    준영속 엔티티란? 영속성 컨텍스트가 더는 관리하지 않는 엔티티를 말한다. 임의로 만들어낸 엔티티라도 기존 식별자를 가지고 있는 경우(JPA가 식별할 수 있는 id를 가지고 있는 경우)에는 준영속 엔티티라고 말한다. 준영속 엔티티를 수정하는 2가지 방법 1. 변경 감지 2. 병합(merge) 변경 감지 @Transactional public void update(Item itemParam){ // itemParam : 파라미터로 넘어온 준영속 상태의 엔티티 Item findItem = em.find(Item.class, itemParam.getId()); // 같은 엔티티를 조회한다. findItem.setPrice(itemPrice.getPrice()); // 데이터를 수정한다. } 영속성 컨텍스트에서 ..

728x90