Spring Data JPA는 메서드 이름만으로 쿼리를 자동으로 생성해주는 기능을 제공합니다.
findByXxx, readByXxx, countByXxx처럼 메서드 이름을 규칙에 맞게 설정하면 편리하게 DB 접근이 가능.
1. findByTagNo
- 역할: 특정 tagNo 값을 가진 여러 개 태그 데이터 조회
- 반환 타입: List<TagsEntity>
- 예시:
public interface TagsRepository extends JpaRepository<TagsEntity, Long> {
List<TagsEntity> findByTagNo(Long tagNo);
}
- 주의: DB에서 tagNo가 유일(unique)하지 않다면, 여러 개의 엔티티가 반환될 수 있습니다.
2. getTagById
- 역할: 단일 태그를 조회할 때 사용하는 서비스 레이어 메서드
- 내부적으로 findById 등을 사용하여 Optional<TagsEntity> 반환
- 예시:
@Service
public class TagsService {
private final TagsRepository tagsRepository;
public TagsService(TagsRepository tagsRepository) {
this.tagsRepository = tagsRepository;
}
public Optional<TagsEntity> getTagById(Long id) {
return tagsRepository.findById(id);
}
}
- 장점:
- 결과가 없으면 Optional.empty()를 반환해, 예외 처리 등에 유연하게 대응 가능
Spring Data JPA의 쿼리 메서드는 간단한 조회에서 강력한 생산성을 발휘.
복잡한 쿼리는 @Query나 QueryDSL 등을 활용해 맞춤형 JPQL로 작성하는 것이 더 적합할 수 있음.
'개념정복💫 > 스프링 Spring 정복' 카테고리의 다른 글
스프링에서 Bean 주입 시 주의사항 (필드 vs 생성자 주입) (0) | 2025.02.24 |
---|---|
양방향 매핑 시 무한 루프 문제란? (0) | 2025.02.23 |
JPA 일대일(OneToOne) 관계 매핑 (0) | 2025.02.23 |
즉시 로딩(EAGER)과 지연 로딩(LAZY), 언제 어떤 전략을 써야 할까? (1) | 2025.02.23 |
JPA 페치 타입: 즉시 로딩(EAGER)과 지연 로딩(LAZY) (0) | 2025.02.23 |