public interface MemberRepository extends JpaRepository<Member,Long>
JpaRepository가 기본적으로 지원하는 검색 메소드는 findAll(),findById() 가 있다.
그러나 DB에 접근하다보면 유저 이름으로 찾아야 할 때가 있고, 그 외의 필드로 DB에 있는 정보를 꺼내오고 싶을때가 있다. 그럴때 인터페이스에 메소드를 추가할 수 있다.
public List<Member> findByUsername(String username);
위와 같이 유저 이름으로 멤버를 찾는 메소드를 추가할 수 있는데, 메소드 명을 정하는데 몇몇 규칙이 존재한다. 정해진 규칙대로 메소드를 선언하면, 알아서 메소드가 생성된다.

가장 기본적인 메소드. findBy 이후에 엔티티의 속성 이름을 붙인다. 이 속성 이름은 첫 글자는 대문자로 한다. 예를 들어, name을 검색한다면 findByName()이며, mail에서 찾는다면 findByMail()가 된다.
아래는 findByXX다음에 이어서 붙이면 되는 속성이다. ex) findByNameLike()
퍼지 검색에 관한 속성이다. Like를 붙이면, 인수에 지정된 텍스트를 포함하는 엔티티를 검색한다. 또한 NotLike을 쓰면 인수의 텍스트를 포함하지 않는 것을 검색한다. findByNameLike()라고 선언하면, name에서 인수의 텍스트를 퍼지 검색한다.
텍스트 값에서 인수에 지정된 텍스트로 시작하거나 끝나는 것을 검색하기 위한 것이다. findByNameStartingWith("A")이라면, name의 값이 "A"로 시작하는 항목을 검색한다.
값이 null이 거나, 혹은 null이 아닌 것을 검색한다. 인수는 필요없다. findByNameIsNull()이라면, name의 값이 null의 것만 검색한다.
부울 값으로 true 인 것, 혹은 false 인 것을 검색한다. 인수는 필요없다. findByCheckTrue()이라면, check라는 항목이 true 인 것만을 검색한다.
시간 값으로 사용한다. 인수에 지정한 값보다 이전의 것, 혹은 이후 것을 검색한다. findByCreateBefore(new Date())라고 하면, create라는 항목의 값이 현재보다 이전의 것만을 찾는다 (create가 Date 인 경우).
숫자 값으로 사용한다. 그 항목의 값이 인수보다 작거나 큰 것을 검색한다. findByAgeLessThan(20)이라면, age의 값이 20보다 작은 것을 찾는다.
두 값을 인수로 가지고 그 두 값 사이의 것을 검색한다. 예를 들어, findByAgeBetween(10, 20)라고 한다면 age 값이 10 이상 20 이하인 것을 검색한다. 수치뿐만 아니라 시간의 항목 등에도 사용할 수 있다.
이외에도 수많은 속성이 존재하는데, 이를 잘 활용한다면 JpaRepository 인터페이스를 이용하여 편리하게 DB에서 자료를 검색할 수 있다.