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

JPA

ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 1์ผ์ฐจ - Query Method

๐Ÿ“Œ Query Method

์กฐํšŒ ๋„ค์ด๋ฐ์ฟผ๋ฆฌ prefix

  • findBy
  • readBy
  • getBy
  • queryBy
  • searchBy
  • streamBy
    โœ”๏ธ ๋ชจ๋‘ ๊ฐ™์€ select ์กฐํšŒ ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    โœ”๏ธ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ์ ํ•ฉํ•œ ์ด๋ฆ„์„ ์„ ํƒํ•˜๋ฉด ๋จ. (find ๊ถŒ์žฅ)
    โœ”๏ธ ๋„ค์ด๋ฐ ์ฟผ๋ฆฌ๋Š” ์ปดํŒŒ์ผ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š์Œ
    ex) findByByName - ์ปดํŒŒ์ผOK, ๋Ÿฐํƒ€์ž„์—๋Ÿฌ (์ปดํŒŒ์ผ ์‹œ์ ์— ์—๋Ÿฌ๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์—†๋‹ค.)

First / Top

ex1)
๋‚˜์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ƒ์œ„ 3๊ฐœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฝ‘์•„๋‚ธ๋‹ค.
findUserFirst3ByAge(Integer age);

ex2)
๋‚˜์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ƒ์œ„ 3๊ฐœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฝ‘์•„๋‚ธ๋‹ค.
findUserTop3ByAge(Integer age);


After / Before

  • ๋‚ ์งœ๋ผ๋ฆฌ ๋ถ€๋“ฑํ˜ธ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ์ˆซ์ž์˜ ๊ฒฝ์šฐ์—๋„ After / Before ์ ์šฉ๊ฐ€๋Šฅ
    ํ•˜์ง€๋งŒ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ๋‚ ์งœํ•„๋“œ์—๋งŒ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๊ณ  ์ˆซ์ž์˜ ๊ฒฝ์šฐ GreaterThan, LessThan ์„ ์‚ฌ์šฉ ๊ถŒ์žฅ
    ex)
    ์ƒ์„ฑ์ผ์ž(CreatedAt)์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋“ค์–ด์˜ค๋Š” date๋ณด๋‹ค ์ดํ›„(after)์ธ row ์กฐํšŒ
    findUserByCreatedAtAfter(LocalDateTime date);

์ˆ˜์ •์ผ์ž(UpdatedAt)์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋“ค์–ด์˜ค๋Š” date๋ณด๋‹ค ์ด์ „(before)์ธ row ์กฐํšŒ

findUserByUpdatedAtBefore(LocalDateTime date);

GreaterThan / LessThan / GreaterThanEqual

After, Before์™€ ๋™์ผํ•˜๊ฒŒ where์ ˆ์—์„œ ๋ถ€๋“ฑํ˜ธ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰
โœ”๏ธ ์ด๋ฆ„๋งŒ ๋‹ค๋ฅผ ๋ฟ์ด์ง€๋งŒ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ๋‚ ์งœ์˜ ๊ฒฝ์šฐ After , Before๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ผ๋ฐ˜์ ์ธ ์ˆ˜์˜ ๋Œ€์†Œ์˜ ๊ฒฝ์šฐ GreaterThan ๋“ฑ์„ ์‚ฌ์šฉ ๊ถŒ์žฅ

ex)
age๋ณด๋‹ค ๋‚˜์ด๊ฐ€ ๋งŽ์€ row๋ฅผ ์กฐํšŒ
findUserByAgeGreaterThan(int age);


Between

๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์€ ๋‘ ๊ฐ’ ์‚ฌ์ด (๋‚ ์งœ๋„ ์ ์šฉ ๊ฐ€๋Šฅ)
start <= target <= end

ex)
findUserByCreatedAtBetween(LocalDateTime start, LocalDateTime, end);
findUserByAgeBetween(int start, int end);


In

SQL์˜ In์ฟผ๋ฆฌ์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘

List๋กœ ๋ฐ›์€ name ๋ชฉ๋ก๊ณผ ์ด๋ฆ„์ด ๊ฐ™์€ User๋ฅผ ๋ชจ๋‘ ์กฐํšŒ
ex)
findUserByNameIn(List<String> names);


Like / StartingWith / EndingWith / Contains

ex)
name์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์€ name์œผ๋กœ ์‹œ์ž‘
findUserByNameStartingWith(String name);

name์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์€ name์œผ๋กœ ๋
findUserByNameEndingWith(String name);

name์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์€ name์„ ํฌํ•จ
findUserByNameContains(String name);

ex) Like
findUserByNameLike(String name);

userRepository.findByNameLike("%dae%");
โœ”๏ธ Contains์™€ ๋™์ผ


๐Ÿ‘ ์ˆ˜๊ฐ•์ธ์ฆ

 

ํŒจ์ŠคํŠธ์บ ํผ์Šค [์ง์žฅ์ธ ์‹ค๋ฌด๊ต์œก]

ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ์˜์ƒํŽธ์ง‘, UX/UI, ๋งˆ์ผ€ํŒ…, ๋ฐ์ดํ„ฐ ๋ถ„์„, ์—‘์…€๊ฐ•์˜, The RED, ๊ตญ๋น„์ง€์›, ๊ธฐ์—…๊ต์œก, ์„œ๋น„์Šค ์ œ๊ณต.

fastcampus.co.kr

๋ณธ ํฌ์ŠคํŒ…์€ ํŒจ์ŠคํŠธ์บ ํผ์Šค ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ ์ฐธ์—ฌ๋ฅผ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.