Spring/๐Ÿ”ฅ[spring]์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ ์›น ํ”„๋กœ์ ํŠธ_๊ตฌ๋ฉ๊ฐ€๊ฒŒ ์ฝ”๋”ฉ๋‹จ

2.6 ์ฟผ๋ฆฌ ๋ฉ”์„œ๋“œ(Query Methods)๊ธฐ๋Šฅ๊ณผ @Query

1son 2023. 1. 30. 11:03

JpaRepository ์˜ ๋งˆ์ง€๋ง‰์œผ๋กœ ์‚ดํŽด๋ณผ ๊ธฐ๋Šฅ์€ ์ฟผ๋ฆฌ ๋ฉ”์„œ๋“œ๋ผ๋Š” ๊ธฐ๋Šฅ๊ณผ

JPQL์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. 

 

 

์•ž์˜ ์˜ˆ์ œ์—์„œ ์•„์‰ฌ์šด ์ ์€ ๋‹ค์–‘ํ•œ ๊ฒ€์ƒ‰ ์กฐ๊ฑด์— ๋Œ€ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. 

 

Spring Data JPA์˜ ๊ฒฝ์šฐ์—๋Š”, ์ด๋Ÿฌํ•œ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 

- ์ฟผ๋ฆฌ ๋ฉ”์„œ๋“œ : ๋ฉ”์„œ๋“œ ์ด๋ฆ„ ์ž์ฒด๊ฐ€ ์ฟผ๋ฆฌ์˜ ๊ตฌ๋ฌธ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ธฐ๋Šฅ

- @Query : SQL๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค์˜ ์ •๋ณด๋ฅผ ์ด์šฉํ•ด์„œ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ

- Querydsl๋“ฑ์˜ ๋™์  ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ

 

 

 

2.6.1 ์ฟผ๋ฆฌ ๋ฉ”์„œ๋“œ

 

์ฟผ๋ฆฌ ๋ฉ”์„œ๋“œ๋Š” ๋ง ๊ทธ๋Œ€๋กœ '๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„ ์ž์ฒด๊ฐ€ ์งˆ์˜๋ฌธ'์ด ๋˜๋Š” ํฅ๋ฏธ๋กœ์šด ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

 

์ฟผ๋ฆฌ ๋ฉ”์„œ๋“œ์€ ์ฃผ๋กœ 'findBy๋‚˜ getBy'๋กœ ์‹œ์ž‘ํ•˜๊ณ  

์‚ฌ์šฉํ•˜๋Š” ํ‚ค์›Œ๋“œ์— ๋”ฐ๋ผ์„œ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐœ์ˆ˜๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. 

 

๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

- select๋ฅผ ํ•˜๋Š” ์ž‘์—…์ด๋ผ๋ฉด List ํƒ€์ž…์ด๋‚˜ ๋ฐฐ์—ด์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

- ํŒŒ๋ผ๋ฏธํ„ฐ์— Pageable ํƒ€์ž…์„ ๋„ฃ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฌด์กฐ๊ฑด Page<E> ํƒ€์ž…

 

์˜ˆ๋ฅผ๋“ค์–ด Memo๊ฐ์ฒด์˜ mno๊ฐ’์ด 70๋ถ€์ฒ˜ 80์‚ฌ์ด์˜ ๊ฐ์ฒด๋“ค์„ ๊ตฌํ•˜๊ณ 

mno์˜ ์—ญ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด 

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์†Œ๋“œ๋ฅผ MemoRepository ์ธํ„ฐํŽ˜์ด์Šค์— ์ถ”๊ฐ€ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 

 

List<Memo> findByMnoBetweenOrderByMnoDesc(Long from, Long to);

 

 

deleteBy๋กœ ์‹œ์ž‘ํ•˜๋Š” ์‚ญ์ œ ์ฒ˜๋ฆฌ 

 

์ฟผ๋ฆฌ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ 'deleteBy'๋กœ ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„์„ ์‹œ์ž‘ํ•˜๋ฉด ํŠน์ •ํ•œ ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. 

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฉ”๋ชจ์˜ ๋ฒˆํ˜ธ(mno)๊ฐ€ 10๋ณด๋‹ค ์ž‘์€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

๊ฐœ๋ฐœ ์‹œ์—๋Š” deleteBy๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ์‹๋ณด๋‹ค๋Š” @Query๋ฅผ ์ด์šฉํ•ด์„œ ์œ„์™€ ๊ฐ™์€ ๋น„ํšจ์œจ์ ์ธ ๋ถ€๋ถ„์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค. 

 

2.6.2 @Query ์–ด๋…ธํ…Œ์ด์…˜ 

Spring Data JPA๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ฟผ๋ฆฌ ๋ฉ”์„œ๋“œ๋Š”