본문 바로가기

프로젝트 & TIL/일별 공부 기록 (백엔드 스쿨)

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

https://docs.spring.io/spring-data/jpa/docs/2.3.3.RELEASE/reference/html/#jpa.query-methods.query-creation

 

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