728x90
๋ฐ˜์‘ํ˜•
[SpringFramework] SpEL (Spring Expression Language, ์Šคํ”„๋ง ํ‘œํ˜„์‹)

SpEL (Spring Expression Langauge) ์ด๋ž€? ์Šคํ”„๋ง ํ‘œํ˜„์‹์€ SpEL๋กœ ํ‘œ๊ธฐํ•˜๊ณ  ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ์กฐํšŒํ•˜๊ณ  ์กฐ์ž‘ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Unified EL๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ๊ณผ ๋ฌธ์ž์—ด ํ…œํ”Œ๋ฆฟ ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ‘œํ˜„์‹์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€(OGNL: Object Graph Navigation Language, MVEL: MVFlEX Expression Language, JBOss EL)๊ฐ€ ์žˆ์ง€๋งŒ SpEL์€ ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ์‚ฌ์šฉํ•  ์šฉ๋„๋กœ ๋งŒ๋“  ํ‘œํ˜„์‹์ž…๋‹ˆ๋‹ค. ์Šคํ”„๋ง 3 ๋ฒ„์ „๋ถ€ํ„ฐ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. SpEL์„ ์‚ฌ์šฉํ•˜๋Š” ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ SpEL์€ ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ ์ „๋ฐ˜์ ์œผ๋กœ ๋ชจ๋‘ ์‚ฌ์šฉ๋˜์ง€๋งŒ ๊ฐ€์žฅ ๋น„์ค‘์žˆ๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. @Value @Comditi..

SpringBoot 2021. 7. 29. 14:56
[Querydsl] Spring Data JPA์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๊ธฐ

๋ชจ๋“  ์†Œ์Šค ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA์™€ Querydsl์„ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ด ๋ถ€๋ถ„์€ ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA ๊ด€๋ จ ํฌ์ŠคํŒ…์˜ ๋ณต์Šต์ด๋ผ๊ณ  ๋ณด์…”๋„ ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์ฑ•ํ„ฐ์— ์•ž์„œ ๊ด€๋ จ ๋‚ด์šฉ์„ ๋ฏธ๋ฆฌ ์ฝ๊ณ  ์˜ค์‹œ๋ฉด ๋„์›€์ด ๋  ๊ฑฐ ๊ฐ™์•„ ๋งํฌ๋ฅผ ๋จผ์ € ์ฒจ๋ถ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA - Custom Repository Best Practice ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA - ํŽ˜์ด์ง•๊ณผ ์ •๋ ฌ2(API ํ™œ์šฉ) ๊ทธ๋Ÿผ ์œ„์˜ ๋‚ด์šฉ์„ ์ด๋ฏธ ์•Œ๊ณ ๊ณ„์‹œ๋‹ค๋Š” ์ „์ œ ํ•˜์— ์‹œ์ž‘ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ๐Ÿƒโ€ ์‚ฌ์šฉ์ž ์ •์˜ Repository ๋จผ์ € PlayerRepository๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. package io.lcalmsky.querydsl.repository; import io.lcalmsky.querydsl.dom..

Querydsl 2021. 7. 26. 10:30
[Querydsl] ๋™์  ์ฟผ๋ฆฌ

๋ชจ๋“  ์†Œ์Šค ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค. Querydsl์„ ์ด์šฉํ•ด ๋™์  ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. BooleanBuilder๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ where ์ ˆ์— ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์ด ์žˆ๋Š”๋ฐ์š”, ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. BooleanBuilder BooleanBuilder๋Š” Predicate๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ตฌํ˜„์ฒด์ด๊ณ  Predicate๋Š” where์ ˆ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž…์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ BooleanBuilder๋ฅผ ์ด์šฉํ•ด ์กฐ๊ฑด์ ˆ์„ ์ถ”๊ฐ€ํ•œ ๋’ค where์ ˆ์— ์ „๋‹ฌํ•˜๋ฉด๋˜๊ณ , ์ด ๋ถ€๋ถ„์„ ๋™์ ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ Entity๋Š” ํ•„๋“œ ์ˆ˜๊ฐ€ ์›Œ๋‚™ ์ ์–ด ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋ช‡ ๊ฐ€์ง€ ๋‚˜์˜ค์ง€ ์•Š์œผ๋‹ˆ ํ•œ ๋ฒˆ ๋ชจ๋‘ ํ…Œ์ŠคํŠธํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. package io.lcalmsky.querydsl.domain; impor..

Querydsl 2021. 7. 23. 10:39
[Querydsl] ์„œ๋ธŒ ์ฟผ๋ฆฌ(Subquery), Case(when, then), ์ƒ์ˆ˜(Constant), concat

๋ชจ๋“  ์†Œ์Šค ์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ํฌ์ŠคํŒ…์— ์ด์–ด์„œ Querydsl์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ธŒ ์ฟผ๋ฆฌ(Sub Query) SQL์„ ์ง์ ‘ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ MyBatis ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ ˆ๊ฑฐ์‹œ์—์„œ ๋งŽ์ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” ์‹ค์ œ๋กœ join์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ฟผ๋ฆฌ๋ฅผ ๋‚˜๋ˆ ์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ์ƒ ์œ ๋ฆฌํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ƒํ™ฉ๋“ค์„ ์œ„ํ•ด Querydsl์—์„œ์˜ ์„œ๋ธŒ ์ฟผ๋ฆฌ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ํ™•์ธํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์„œ๋ธŒ ์ฟผ๋ฆฌ ์‚ฌ์šฉ์„ ์œ„ํ•ด์„  JPAExpressions๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € ์„ ์ˆ˜๋“ค ์ค‘ ๋‚˜์ด๊ฐ€ ๊ฐ€์žฅ ๋งŽ์€ ์„ ์ˆ˜๋ฅผ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ์ด์šฉํ•ด ์กฐํšŒํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. package io.lcalmsky.querydsl.domain; import com.querydsl.jpa.JPAExpressions; impor..

Querydsl 2021. 7. 21. 12:39
728x90
๋ฐ˜์‘ํ˜•
๊ณต์ง€์‚ฌํ•ญ
Total
71,740
Today
103
Yesterday
133
๋งํฌ
«   2021/07   »
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ