LUMI_dev

Spring Data JPA - #4 Query Methods란? 본문

스파르타 코딩 클럽 | 자바 심화 과정/Spring Master (입문 주차)

Spring Data JPA - #4 Query Methods란?

luminous_dev 2025. 2. 4. 11:02

Query Methods

: Spring Data JPA에서는 메서드 이름으로 SQL을 생성할 수 있는 Query Methods 기능을 제공

 

테이블에서 요청하고자 하는 SQL을 아래와 같은 method이름을 사용해서 선언할 수 있음 

 

1. MemoRepository.java에서 작성하기 

메소드의 이름을 분석해서 SimpleJpaRepository에서 SQL 실행 - 우리가 따로 구현하지 않아도 됨(ex. Select * From~)

 

package com.sparta.sparta_memo_project.repository;

import com.sparta.sparta_memo_project.dto.MemoRequestDto;
import com.sparta.sparta_memo_project.dto.MemoResponseDto;
import com.sparta.sparta_memo_project.entity.Memo;
import jakarta.persistence.EntityManager;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;

//@Repository는 자동으로 제공되므로 없애주기 + 안 달아도 이제 Bean 등록도 됨
public interface MemoRepository extends JpaRepository<Memo, Long> {
    //Long = @Id(PK) 의 데이터 형식

    List<Memo> findAllByOrderByModifiedAtDesc();
    //find (select) All(모두) ByOrderBy (정렬) Modified(Modified 필드로) AtDesc (내림차순) 

}

 

2. 서비스 단에서도 해당 내용 사용

 

 

MemoRepository.java

findAllByOrderByModifiedAtDesc(); /  findAllByUsername();

package com.sparta.sparta_memo_project.repository;

import com.sparta.sparta_memo_project.dto.MemoRequestDto;
import com.sparta.sparta_memo_project.dto.MemoResponseDto;
import com.sparta.sparta_memo_project.entity.Memo;
import jakarta.persistence.EntityManager;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;

//@Repository는 자동으로 제공되므로 없애주기 + 안 달아도 이제 Bean 등록도 됨
public interface MemoRepository extends JpaRepository<Memo, Long> {
    //Long = @Id(PK) 의 데이터 형식

    List<Memo> findAllByOrderByModifiedAtDesc();
    //find (select) All(모두) ByOrderBy (정렬) Modified(Modified 필드로) AtDesc (내림차순)

    List<Memo> findAllByUsername(); //Username필드만 가져와라
    List<Memo> findAllByUsername(String username); //파라메터로 어떤 username의 게시물을 가져올지도 지정 가능

    //findAll(모두 가져올건데) ByUsername (Where~ 유저네임인 것만 가져와라)
}