๐ ์ค๋์ ํ์ต ํค์๋
- Query Methods
๐ฅ Query Methods๋ ?
Spring Data JPA ์์๋ ๋ฉ์๋ ์ด๋ฆ์ผ๋ก SQL์ ์์ฑํ ์ ์๋ Query Methods ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
package com.sparta.memo.repository;
import com.sparta.memo.entity.Memo;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface MemoRepository extends JpaRepository<Memo, Long> {
List<Memo> findAllByOrderByModifiedAtDesc();
}
- JpaRepository ์ธํฐํ์ด์ค์์ ํด๋น ์ธํฐํ์ด์ค์ ๋งคํ๋์ด ์๋ ํ ์ด๋ธ์,
- ์์ฒญํ๊ณ ์ ํ๋ SQL์ ๋ฉ์๋ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์ ์ธํ ์ ์์ต๋๋ค.
SimpleJpaRepository ํด๋์ค๊ฐ ์์ฑ๋ ๋ ์์ฒ๋ผ ์ง์ ์ ์ธํ JpaRepository ์ธํฐํ์ด์ค์ ๋ชจ๋ ๋ฉ์๋๋ฅผ ์๋์ผ๋ก ๊ตฌํํด ์ค๋๋ค.
- JpaRepository ์ธํฐํ์ด์ค์ ๋ฉ์๋ ์ฆ, Query Methods ๋ ๊ฐ๋ฐ์๊ฐ ์ด๋ฏธ ์ ์๋์ด์๋ ๊ท์น์ ๋ง๊ฒ ๋ฉ์๋๋ฅผ ์ ์ธํ๋ฉด,
- ํด๋น ๋ฉ์๋ ์ด๋ฆ์ ๋ถ์ํ์ฌ SimpleJpaRepository์์ ๊ตฌํ์ด ๋ฉ๋๋ค.
- ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ธํฐํ์ด์ค์ ํ์ํ SQL์ ํด๋นํ๋ ๋ฉ์๋ ์ด๋ฆ ํจํด์ผ๋ก ๋ฉ์๋๋ฅผ ์ ์ธํ๊ธฐ๋ง ํ๋ฉด ๋ฐ๋ก ๊ตฌํํ์ง ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- findAllByOrderByModifiedAtDesc ํด๋น ๋ฉ์๋ ์ด๋ฆ์ Memo ํ ์ด๋ธ์์ ModifiedAt ์ฆ, ์์ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ
- ๋ด๋ฆผ์ฐจ์์ผ๋ก ๊ฐ์ ธ์ค๋ SQL์ ์คํํ๋ ๋ฉ์๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
- List<Memo> findAllByUsername(String username);
์ด๋ ๊ฒ Query Method๋ฅผ ์ ์ธํ์ ๊ฒฝ์ฐ ByUsername ์ ๊ฐ์ ์ ๋ฌํด์ค์ผ ํ๊ธฐ ๋๋ฌธ์ ํ๋ผ๋ฏธํฐ์ ํด๋น ๊ฐ์ ํ์ ๊ณผ ๋ณ์๋ช ์ ์ ์ธํด ์ค๋๋ค.
์ฆ, Query Methods ๋ ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ๋ฅผ ํตํด SQL์ ํ์ํ ๊ฐ์ ๋์ ์ผ๋ก ๋ฐ์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
public List<MemoResponseDto> getMemos() {
// DB ์กฐํ
return memoRepository.findAllByOrderByModifiedAtDesc()
.stream().map(MemoResponseDto::new).toList();
}
- ์ต์ ๋ฉ๋ชจ๊ฐ ๊ฐ์ฅ ์๋จ์ ๋์ฌ ์ ์๊ฒ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐ๊ฟจ์ต๋๋ค.
๐ ์ค๋์ ํ๊ณ
๋ด์ผ๋ถํฐ ์ฐํด๋๊น ๋ ์ด์ฌํ ํด๋ณด์