data-jpa
JPA :: 벌크성 수정 쿼리
벌크 연산 여러 건의 데이터를 한 번에 수정하거나 삭제 조건에 맞는 객체를 다 가지고 와서 수정할 필요 없이 DB 쿼리로 해결하는 것. JPA Bulk 예제 코드 : 파라미터로 받은 나이보다 많은 회원들의 나이를 +1 시킨다. public int bulkAgePlus(int age) { return em.createQuery( "update Member m set m.age = m.age + 1" + " where m.age >= :age") .setParameter("age", age) .executeUpdate(); } 테스트 코드 @Test public void bulkUpdate() { //given memberJpaRepository.save(new Member("member1", 10)); m..
JPA :: 페이징과 정렬
기존 JPA 페이징과 정렬 public List findByPage(int age, int offset, int limit) { return em.createQuery("select m from Member m where m.age = :age order by m.username desc") .setParameter("age", age) .setFirstResult(offset) .setMaxResults(limit) .getResultList(); } public long totalCount(int age) { return em.createQuery("select count(m) from Member m where m.age = :age", Long.class) .setParameter("age", a..
JPA :: Query Method 기능
스프링 데이터 JPA 가 제공하는 마법같은 기능이 있다. 바로 “쿼리 메소드” 기능인데, 결론부터 말하면 3가지 기능이 있다. 메소드 이름으로 쿼리 생성 메소드 이름으로 JPA NamedQuery 호출 @Query 어노테이션을 사용해서 Repository interface 에 쿼리 직접 정의 Method 이름으로 Query 생성 메소드 이름을 분석해서 JPQL 쿼리 실행 예) 이름과 나이를 기준으로 회원을 조회하려면 ? // 순수 JPA Repository public List findByUsernameAndAgeGreaterThan(String username, int age) { return em.createQuery("select m from Member m where m.username = :us..
Spring Boot :: Spring Data 패키지 구조
Spring Data JPA 를 활용해서 인터페이스를 사용할 때 JpaRepository 를 상속받아서 사용한다. 이 JpaRepository 안에 들어가면 또 다른 Repository 를 상속받고 또 상속받고 ,, 이 구조에 대해서 기록해두고자 한다. 인터페이스 살펴보기 먼저 MemberRepository 라는 레포지토리를 만들어보았다. public interface MemberRepository extends JpaRepository { } 여기서 JpaRepository 안에 들어가보자. 패키지 위치는 org.springframework.data.jpa.repository 이다. JpaRepository 는 PagingAndSortingRepository 를 상속받고 있고, PagingAndSort..