ctrl + shift + t : 테스트하기



단위별로 테스트를 하는 느낌.
언제?
레파지토리나 쿼리(db 관련 부분) 관련 테스트 때 씀.
더 다양할 때도 쓰지만 지금은 이것부터 연습하자.
장점
매우 빠르게 결과 실행 가능
궁금
레파지토리에 @repository 어노테이션 붙이면 되는데 왜
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);}
이렇게 구지 쓰는 거야?
-crud 메서드 제공, 커스텀 쿼리 메서드 가능, 코드 간결성, 일관된 예외 처리, 등등 때문에 씀.
자세한 설명
@Repository 어노테이션을 사용하여 레포지토리를 정의할 수 있지만, Spring Data JPA의 JpaRepository 인터페이스를 확장하는 것이 훨씬 더 편리하고 강력합니다. 몇 가지 이유를 통해 설명드리겠습니다.
1. CRUD 메서드 제공
JpaRepository를 확장하면 기본적인 CRUD (Create, Read, Update, Delete) 작업을 수행하기 위한 메서드를 자동으로 사용할 수 있습니다. 이를 통해 반복적인 CRUD 코드를 작성할 필요가 없어집니다.
java
코드 복사
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
}
위의 코드에서 JpaRepository를 확장함으로써, save, findById, findAll, deleteById 등의 메서드를 자동으로 사용할 수 있습니다.
2. 커스텀 쿼리 메서드
Spring Data JPA는 메서드 이름을 기반으로 쿼리를 생성할 수 있습니다. 예를 들어, findByUsername 메서드는 username 필드를 기준으로 사용자 엔티티를 검색하는 쿼리를 자동으로 생성합니다. 이는 매우 직관적이고 간편합니다.
java
코드 복사
User findByUsername(String username);
3. 코드 간결성
JpaRepository를 확장하면 기본적인 데이터 접근 로직을 직접 구현하지 않아도 되므로 코드가 더 간결해집니다. 이는 개발 시간을 절약하고 코드 유지보수를 쉽게 만듭니다.
4. 일관된 예외 처리
Spring Data JPA는 데이터 접근 계층에서 발생할 수 있는 다양한 예외를 DataAccessException으로 래핑하여 던집니다. 이를 통해 일관된 방식으로 예외를 처리할 수 있습니다.
5. 추가 기능
JpaRepository는 페이징, 정렬, 배치 처리 등의 고급 기능을 제공합니다. 이러한 기능을 사용하면 데이터베이스 작업을 더욱 효율적으로 수행할 수 있습니다.
6. Spring Boot와의 통합
Spring Boot는 Spring Data JPA와의 긴밀한 통합을 제공하여, 데이터 접근 계층을 빠르고 쉽게 설정할 수 있게 합니다. JpaRepository를 사용하면 Spring Boot가 자동으로 필요한 설정을 해주기 때문에 개발이 더 쉬워집니다.
Share article