주의점
@Setter
실무에서 가급적 사용하지 않기@NoArgsConstructor AccessLevel.PROTECTED
: 기본 생성자 막고 싶지만, JPA 스펙상 PROTECTED
로 열어두어야 함@ToString
: 가급적 내부 필드만(연관관계 없는 필드만)스프링 데이터 JPA가 구현 클래스 대신 생성
org.springframework.data.repository.Repository
를 구현한 클래스는 스캔 대상 기능
MemberRepository
: memberRepository.getClass()
-> class.com.sun.proxy.$ProxyXXX
@Repository
생략 가능
JpaRepository
인터페이스: 공통 CRUD 제공JpaRepository
공통 기능 인터페이스
public interface JpaRepository<T, ID extends Serializable>
extends PagingAndSortingRepository<T, ID>
{
...
}
save(S)
: 새로운 엔티티는 저장하고 이미 있는 엔티티는 병합한다.delete(T)
: 엔티티 하나를 삭제한다. 내부에서 EntityManager.remove()
호출findById(ID)
: 엔티티 하나를 조회한다. 내부에서 EntityManager.find()
호출getOne(ID)
: 엔티티를 프록시로 조회한다. 내부에서 EntityManager.getReference()
호출findAll(...)
: 모든 엔티티를 조회한다. 정렬(Sort)이나 페이징(Pageable)조건을 파라미터로 제공할 수 있다."본 포스트는 작성자가 공부한 내용을 바탕으로 작성한 글입니다.
잘못된 내용이 있을 시 언제든 댓글로 피드백 부탁드리겠습니다.
항상 정확한 내용을 포스팅하도록 노력하겠습니다."