๋ฐ˜์‘ํ˜•
Optional์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•˜์ง€ ๋ง์ž

์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋‹ค๋ณด๋ฉด Optional์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ–ˆ์„ ๋•Œ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ฒฝ๊ณ (๋…ธ๋ž€์ค„)๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. (IntelliJ์—์„œ๋Š” ํ‘œ์‹œํ•ด์ฃผ๋Š”๋ฐ ๋‹ค๋ฅธ IDE๋Š” ์–ด๋–ค์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋„ค์š”) ๊ฒฝ๊ณ ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๋ฉด, public void foo(String nullable) { bar(Optional.of(nullable)); } private void bar(Optional s) { // do something } 'Optional' used as type for parameter 's' ๋ฐ”๋กœ ์ด๋Ÿฐ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ Optional์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌํ•˜๋ฉด ์•ˆ ๋˜๋Š” ๊ฒƒ์ผ๊นŒ์š”? ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋ง์”€๋“œ๋ฆฌ๋ฉด ์žฅ์ ๋ณด๋‹ค ๋‹จ์ ์ด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋จผ์ € ์žฅ์ ์œผ๋กœ..

Java 2023. 2. 3. 04:38
Optional์—์„œ orElse()์™€ orElseGet()์€ ๋ฌด์Šจ ์ฐจ์ด๊ฐ€ ์žˆ์„๊นŒ?

Optional์„ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด ๋งˆ์ง€๋ง‰์— orElse() ๋˜๋Š” orElseGet()๋ฅผ ์ด์šฉํ•ด ์›๋ž˜ ๊ฐ’์„ ์–ป์Šต๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ ์ €๋Š” ๋‘ ๋ฉ”์„œ๋“œ์˜ ์ฐจ์ด๊ฐ€ ๋‹จ์ˆœํžˆ ์ „๋‹ฌํ•ด์•ผํ•˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ฐจ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด orElse(defaultValue), orElseGet(this::getDefaultValue) (๋˜๋Š” orElseGet(() -> getDefaultValue())) ์ด๋Ÿฐ์‹์œผ๋กœ ํ•˜๋‚˜๋Š” ๊ฐ’์„ ์ „๋‹ฌํ•˜๊ณ  ํ•˜๋‚˜๋Š” ๊ตฌํ˜„์ฒด๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ƒฅ ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ฒ ๋‹ค๋Š” ์ •๋„๋กœ๋งŒ ์ƒ๊ฐํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋˜ ์ค‘ ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๋‹ค๊ฐ€ mocking์„ ์‚ฌ์šฉํ•˜์˜€๋Š”๋ฐ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋ณธ๋ฌธ๊ณผ ํฌ๊ฒŒ ๊ด€๋ จ ์—†๋Š” ๋‚ด์šฉ(์–ด๋–ค ํ…Œ์ŠคํŠธ๊ฐ€ ๋™์ž‘ํ•˜์ง€ ์•Š์•˜๋Š”์ง€)์ด๋ผ ์ ‘์–ด๋‘๊ฒ ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ํ•  ํด๋ž˜์Šค๋Š” Servi..

Java 2023. 2. 1. 10:30
I/O๋Š” ๋” ์ด์ƒ Bottleneck์ด ์•„๋‹ˆ๋‹ค

ํฅ๋ฏธ๋กœ์šด ๊ธ€์ด ์žˆ์–ด ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์›๊ธ€์€ ์—ฌ๊ธฐ์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์ธํ„ฐ๋ทฐํ•  ๋•Œ ํ…์ŠคํŠธ ํŒŒ์ผ์—์„œ ๋‹จ์–ด ๋นˆ๋„๋ฅผ ์„ธ๋Š” ๊ฐ„๋‹จํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ์ฝ”๋”ฉํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ๊ธฐ์ˆ ์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋ช‡ ๊ฐ€์ง€ ํ›„์† ์งˆ๋ฌธ์„ ํ†ตํ•ด ๋†€๋ผ์šธ ์ •๋„๋กœ ๊นŠ์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ํ›„์† ์งˆ๋ฌธ ์ค‘ ํ•˜๋‚˜๋Š” "๊ท€ํ•˜์˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?"์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ "์ž…๋ ฅ ํŒŒ์ผ์—์„œ ์ฝ๊ธฐ"์™€ ๊ฐ™์€ ๋ง์„ ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•ด๋ณด๊ธฐ ์ „๊นŒ์ง€๋Š” ๋ชจ๋‘ ๊ฐ™์€ ์ƒ๊ฐ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๋ชจ๋‘ I/O๋Š” ๋Š๋ฆฌ๋‹ค๊ณ  ๋ฐฐ์› ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋” ์ด์ƒ I/O๋Š” 10๋…„์ „, 20๋…„์ „๋งŒํผ ๋Š๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋””์Šคํฌ์—์„œ ํŒŒ์ผ์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ฝ๋Š” ๊ฒƒ์€ ๋งค์šฐ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ๊ธฐ๊ธฐ๋กœ, ๋ฐฉ๋ฒ•์œผ๋กœ ํ…Œ์ŠคํŠธํ–ˆ๋Š”์ง€๋Š” ์ด ๊ธ€์—์„œ ํฌ๊ฒŒ ..

ETC 2022. 12. 7. 10:30
JPA @Where ์• ๋„ˆํ…Œ์ด์…˜

DB์—์„œ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์šฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ ์‚ญ์ œ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๋Š” ์ปฌ๋Ÿผ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ธ๋ฐ์š”, ์‚ญ์ œ ๋œ ๋‚ ์งœ๊ฐ€ ์กด์žฌํ•˜๋ฉด ์ •ํ™•ํ•œ ์‚ญ์ œ ์‹œ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ deleted_at๊ณผ ๊ฐ™์€ ์ปฌ๋Ÿผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ์ปฌ๋Ÿผ์ด ์กด์žฌํ•  ๊ฒฝ์šฐ ์ •์ƒ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋“  ์ฟผ๋ฆฌ์— where deleted_at is null๊ณผ ๊ฐ™์€ ์กฐ๊ฑด์ ˆ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿด ๋•Œ @Where ์• ๋„ˆํ…Œ์ด์…˜์„ ํ™œ์šฉํ•˜๋ฉด ๊ฐ„๋‹จํžˆ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋จผ์ € BaseEntity๋ฅผ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค. package io.lcalmsky.wheredemo; import java.time.LocalDateTime; import javax.persistence.Colum..

JPA 2022. 9. 12. 12:00
ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ด๋ฉ”์ผ์— ๋Œ€ํ•ด ๋ฏฟ๋Š” ๊ฑฐ์ง“๋“ค(ํŽŒ)

์›๋ฌธ์€ ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค. ํผ์˜จ ๊ธ€์€ ์—ฌ๊ธฐ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ๋žŒ์€ ์ด๋ฉ”์ผ ์ฃผ์†Œ๊ฐ€ ์žˆ๋‹ค ๋ชจ๋“  ์‚ฌ๋žŒ์€ ๋”ฑ ํ•˜๋‚˜์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ๊ฐ€ ์žˆ๋‹ค ์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” ์ ˆ๋Œ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค ์ด๋ฉ”์ผ ์ฃผ์†Œ๊ฐ€ ๋ณ€ํ•˜๋”๋ผ๋„, ์‚ฌ์šฉ์ž ๊ด€๋ฆฌํ•˜์— ์žˆ๋‹ค ์ด๋ฉ”์ผ ์ฃผ์†Œ๊ฐ€ ๋ณ€ํ•˜๋”๋ผ๋„, ์‚ฌ์šฉ์ž๊ฐ€ ํŠน๋ณ„ํžˆ ์š”์ฒญํ•œ ๊ฒƒ์ด๋‹ค ์ด๋ฉ”์ผ ์ฃผ์†Œ๊ฐ€ ๋ณ€ํ•˜๋”๋ผ๋„, ๊ธฐ์กด ์ฃผ์†Œ๋Š” ๊ณ„์† ๋™์ž‘/์กด์žฌ ํ•œ๋‹ค ํ•˜๋‚˜์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” ํ•œ ์‚ฌ๋žŒ๋งŒ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค ๊ณ ์œ ํ•œ ๋ฌธ์ž์—ด์€ ๋ชจ๋‘ ๋‹ค๋ฅธ ์ด๋ฉ”์ผ ์ฃผ์†Œ์— ๋งคํ•‘๋œ๋‹ค ๋ชจ๋“  ์ด๋ฉ”์ผ ์‹œ์Šคํ…œ์€ ์ค‘์•™ํ™”๋œ ์‹œ์Šคํ…œ์— ์˜ํ•ด ํ˜ธ์ŠคํŠธ ๋œ๋‹ค ํŠน์ • ๋„๋ฉ”์ธ์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด๋ฉ”์ผ์ด ๋ฐœ์†ก๋˜๋ฉด, ํ•ด๋‹น ๋„๋ฉ”์ธ๊ณผ ์ผ์น˜ํ•˜๋Š” ์„œ๋ฒ„๋กœ ์ „๋‹ฌ๋œ๋‹ค ํŠน์ • ๋„๋ฉ”์ธ์˜ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ด๋ฉ”์ผ์ด ๋ฐœ์†ก๋˜๋ฉด, ๊ทธ ๋„๋ฉ”์ธ๊ณผ ์ผ์น˜ํ•˜๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ „์†ก๋œ ๊ฒƒ์ด๋‹ค ๋ชจ๋“  ์ด๋ฉ”์ผ์€ .com , .net, .edu, .org ์ฃผ..

ETC 2022. 9. 6. 12:00
๋ฐ˜์‘ํ˜•
๊ณต์ง€์‚ฌํ•ญ
Total
180,578
Today
58
Yesterday
220
๋งํฌ
ยซ   2023/02   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
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
๊ธ€ ๋ณด๊ด€ํ•จ