๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
TIL

02/08(๋ชฉ) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 34์ผ์ฐจ TIL - Query Methods

by ๊ฐ์ž๊ฐœ๋ฐœ๊พผ 2024. 2. 8.

 

๐Ÿ“–  ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ

  • 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();
}

 

- ์ตœ์‹  ๋ฉ”๋ชจ๊ฐ€ ๊ฐ€์žฅ ์ƒ๋‹จ์— ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋ฐ”๊ฟจ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ“š  ์˜ค๋Š˜์˜ ํšŒ๊ณ 

๋‚ด์ผ๋ถ€ํ„ฐ ์—ฐํœด๋‹ˆ๊นŒ ๋” ์—ด์‹ฌํžˆ ํ•ด๋ณด์ž