디펜던시 → 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
복사