52일차 - JPA Repository 메서드 명명 규칙
JPA Repository 상속
public interface MemberRepository extends JpaRepository<Member, Long> {
}
엔티티는 Member 클래스, Member 엔티티의 id 타입은 Long으로 가정했다.
JPA Repository 기본 메서드
findAll() : 테이블의 전체 목록을 조회한다. List<T> 반환
findById(id) : 기본키의 값이 id인 객체를 조회한다. Optional<T> 반환
save(member) : member 객체를 테이블에 저장한다.
saveAll(memberList) : memberList의 모든 객체를 테이블에 저장한다.
delete(member) : member 데이터를 삭제한다.
deleteAll(memberList) : memberList의 모든 객체를 삭제한다.
count() : 테이블의 전체 데이터 수를 반환한다.
JPA Repository 메서드 명명 규칙
findByXX() : XX에 해당하는 필드의 값이 인자와 일치하는 객체를 조회한다.
public interface MemberRepository extends JpaRepository<Member, Long> {
Optional<Member> findByName(String name);
}
countByXX() : 결과 데이터의 수를 반환한다.
public interface MemberRepository extends JpaRepository<Member, Long> {
Long countByAge(int age);
}
...And...() : 여러 필드에 대해 and로 조회한다.
public interface MemberRepository extends JpaRepository<Member, Long> {
Optional<Member> findByNameAndEmail(String name, String email);
}
...Or...() : 여러 필드에 대해 or로 조회한다.
public interface MemberRepository extends JpaRepository<Member, Long> {
Optional<Member> findByNameOrEmail(String name, String email);
}
...Between() : 필드의 값이 두 인자 사이의 값인 객체를 조회한다.
public interface MemberRepository extends JpaRepository<Member, Long> {
List<Member> findByAgeBetween(int a, int b);
}
...LessThan() : 필드의 값이 인자보다 작은 객체를 조회한다. (...GreaterThan(), ...LessThanEqual(), ...GreaterThanEqual())
public interface MemberRepository extends JpaRepository<Member, Long> {
List<Member> findByAgeLessThan(int a);
}
...Like() : Like를 통한 데이터를 조회한다. ( <=> ...NotLike())
public interface MemberRepository extends JpaRepository<Member, Long> {
Optional<Member> findByNameLike(String name);
}
...Null(), ...IsNull() : 해당 필드의 값이 Null인 객체를 조회한다. (<=> ...NotNull(), ...IsNotNull())
public interface MemberRepository extends JpaRepository<Member, Long> {
Optional<Member> findByNameNull(String name);
Optional<Member> findByNameISNull(String name);
}
...True() : 해당 필드의 값이 True인 객체를 조회한다. (<=> ...False())
public interface MemberRepository extends JpaRepository<Member, Long> {
List<Member> findByMarriedTrue();
}
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/
Spring Data JPA - Reference Documentation
Example 119. Using @Transactional at query methods @Transactional(readOnly = true) interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") void del
docs.spring.io
Spring Data JPA - Reference Documentation
Example 108. Using @Transactional at query methods @Transactional(readOnly = true) public interface UserRepository extends JpaRepository { List findByLastname(String lastname); @Modifying @Transactional @Query("delete from User u where u.active = false") v
docs.spring.io