Search

Spring Data JPA 레퍼런스

디펜던시 → RunTime, Compile 스코프
RunTime → 실행할 때만 필요한 스코프들

Interface 구조

CRUD Repository ← PagingAndSortRepository
CRUD : 기본적인 CRUD, save, delete, findAll, find 등
public interface CrudRepository<T, ID> extends Repository<T, ID> { <S extends T> S save(S entity); Optional<T> findById(ID primaryKey); Iterable<T> findAll(); long count(); void delete(T entity); boolean existsById(ID primaryKey); // … more functionality omitted. }
Java
복사
PagingAndSortRepository: 페이징과 sorting에 관한 정보
public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID> { Iterable<T> findAll(Sort sort); Page<T> findAll(Pageable pageable); }
Java
복사
PagingAndSortingRepository<User, Long> repository = // … get access to a bean Page<User> users = repository.findAll(PageRequest.of(1, 20));
Java
복사
이런 식으로 사용함

키워드 쿼리

interface PersonRepository extends Repository<Person, Long> { List<Person> findByLastname(String lastname); }
Java
복사
interface UserRepository extends CrudRepository<User, Long> { long deleteByLastname(String lastname); List<User> removeByLastname(String lastname); }
Java
복사
class SomeClient { private final PersonRepository repository; SomeClient(PersonRepository repository) { this.repository = repository; } void doSomething() { List<Person> persons = repository.findByLastname("Matthews"); } }
Java
복사

쿼리 Defining

By deriving the query from the method name directly.
By using a manually defined query.
메소드 이름에서 쿼리를 만들어내는 것
manually한 방법으로 쿼리를 만들어내는 것

deriving query

interface PersonRepository extends Repository<Person, Long> { List<Person> findByEmailAddressAndLastname(EmailAddress emailAddress, String lastname); // Enables the distinct flag for the query List<Person> findDistinctPeopleByLastnameOrFirstname(String lastname, String firstname); List<Person> findPeopleDistinctByLastnameOrFirstname(String lastname, String firstname); // Enabling ignoring case for an individual property List<Person> findByLastnameIgnoreCase(String lastname); // Enabling ignoring case for all suitable properties List<Person> findByLastnameAndFirstnameAllIgnoreCase(String lastname, String firstname); // Enabling static ORDER BY for a query List<Person> findByLastnameOrderByFirstnameAsc(String lastname); List<Person> findByLastnameOrderByFirstnameDesc(String lastname); }
JavaScript
복사