이 포스팅은 인프런 영한님의 강의를 복습하며 작성한 글입니다. 페이징 조건 검색조건 : 나이가 10살 정렬 조건 : 이름으로 내림차순 페이징 조건 : 첫번째 페이지, 페이지당 보여줄 데이터는 3건 위 조건을 페이징해서 가져와야한다고 하자. 이 때, 순수 JPA와 스프링 데이터 JPA를 사용해서 각각 페이징을 해보고자 한다. 순수 JPA 페이징 페이지에 맞는 회원 가져오기 public List findByPage(int age, int offset, int limit) { return queryFactory.selectFrom(member) .where(member.age.eq(age)) .orderBy(member.username.desc()) .offset(offset) .limit(limit).fet..
이 게시글은 인프런 영한님의 강의를 복습하며 작성한 글입니다. 스프링 데이터 JPA 클래스 관계도 스프링 데이터 JPA는 다음과 같이 JpaRepository 인터페이스를 제공해주고, 이 인터페이스를 상속받은 인터페이스를 사용하게 되면 JPA를 좀 더 편리하게 사용할 수 있게 된다. JpaRepository 인터페이스의 클래스 다이어그램은 위에서 확인할 수 있다. JpaRepository의 패키지는 "org.springframework.data.jpa.repository"으로 되어있다. JpaRepository는 JPA 패키지에 있기 때문에 JPA에서만 활용할 수 있다는 것을 알 수 있다. PagingAndSortingRepository, CrudRepository 등등은 "org.springframew..
@Repository 어노테이션의 기능 1. ComponentScan의 대상 @Repository 어노테이션은 내부적으로 @Component 어노테이션을 상속 받는다. 따라서, @Repository 어노테이션이 있게 되면 @ComponentScan의 대상이 된다. 2. Exception 치환(JPA → Spring) JPA를 사용하다 문제가 생기면, JPA는 내부적으로 JPA가 사용하는 Exception을 만들어서 사용자에게 알려준다. 이 때 @Repository 어노테이션이 있으면, JPA의 Exception이 Spring에서 사용하는 Exception으로 치환되어 제공될 수 있도록 한다.
이 글은 인프런의 영한님의 강의를 보고 정리한 글입니다. 사용자 정의 Repository 필요성 Query DSL을 사용하는 사람이라면 사용자 정의 Repository를 만들어야 하는 시점이 다가온다. 왜냐하면 스프링 Data JPA에서 지원하는 JpaRepository는 인터페이스이기 때문이다. 인터페이스에서 Query DSL의 Query를 작성해서 넣을 수 없다. 따라서 스프링 Data JPA Repository가 제공하는 자동 쿼리 생성만으로 기능이 부족해지는 때가 온다. 간단한 예를 들면 동적 쿼리 같은 경우다. Query DSL로 동적 쿼리를 만들어 사용하기 위해 사용자가 구현한 Repository를 구현하고, 이걸 스프링 data Jpa가 제공하는 Interface 기반 Repository에서..
이 글은 인프런의 김영한님의 강의를 보고 복습하며 작성한 글입니다. Audit Audit이란 DB를 관리하기 편하도록 DB에 값을 넣을 때, 항상 특정 데이터가 포함되도록 하는 것이다. 이렇게 관리하게 되면, 추후에 DB에서의 문제점을 Trace하는데 많은 도움이 된다고 한다. 따라서 Audit을 하는 것은 거의 필수적이다. 최초 등록 시간 마지막 수정 시간 최초 등록한 사람 마지막 수정한 사람 Audit을 할 때 주로 사용되는 데이터는 위의 4개로 정리를 할 수 있다. 딱 보면 감이 오겠지만, DB에서 문제가 발생했을 때 추적을 하는데 용이하게 쓸 수 있는 값으로 보인다. Audit, 어떻게 하면 스마트한가? 등록, 수정한 사람은 모르더라도 최초 등록한 시간, 마지막 수정한 시간은 DB의 모든 테이블에..
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.