springboot 서비스 구조

Entity(Domain)

Repository
DAO(data access object)
DTO(data transfer object)



spring data JPA는 메소드 이름으로 쿼리 생성을 하는 쿼리 메소드 기능 제공
public interface UserRepository extends JpaRepository<User, Long> {}
-> JpaRepository<User, Long>에서 User는 jpa로 사용할 entity(class), Long은 해당 클래스의 pk(primary key, 기본키)타입이다.
User findByEmail(String email);
User getByEmail(String email);
User readByEmail(String email);
User queryByEmail(String email);
User searchByEmail(String email);
User streamByEmail(String email);
User findUserByEmail(String email);

List<User> findByNameAndEmail(String name, String email);
List<User> findByNameOrEmail(String name, String email);

List<User> findByIdIsNotNull(); // Id값에 Null값이 없는지?
List<User> findByAddressIsNotEmpty();

List<User> findByNameIn(List<String> name);


List<User> findByNameStartingWith(String name);
List<User> findByNameEndingWith(String name);
List<User> findByNameContains(String name);
List<User> findByNameLike(String name);

Set<User> findUserByNameIs(String name);
Set<User> findUserByName(String name);
Set<User> findUserByNameEquals(String name);

List<User> findTop1ByNameOrderByIdDesc(String name);
// Id로 내림차순으로 정렬 후 입력 name과 같은 것의 맨 위의 있는 값을 뽑아온다.
List<User> findFirst2ByNameOrderByIdDescEmailAsc(String name);
// 여러개의 조건으로 find하는 경우는 And를 사용하였으나 정렬 조건으로 여러개의 값을 사용하는 경우는 And를 사용하지 않고 조건을 이어서 붙인다.
List<User> findFirstByName(String name, Sort sort);