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

ํ”„๋กœ์ ํŠธ

(19)
[ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…] 20๋งŒ ๋”๋ฏธ ๋ฐ์ดํ„ฐ ์‚ฝ์ž…์„ csvํŒŒ์ผ์„ ์ด์šฉํ•ด์„œ DB connection timeout → 7์ดˆ๋กœ ์ค„์ด๊ธฐ โญ์„œ๋ก ์ฝ”๋“œ์Šค์ฟผ๋“œ ์—์–ด๋น„์•ค๋น„ ํด๋ก  ์ฝ”๋”ฉ ํ”„๋กœ์ ํŠธ ์ค‘ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ณ  ์‹ถ์—ˆ๊ณ ,์ด๋ฅผ ์œ„ํ•ด ๋‹ค๋Ÿ‰์˜ ์ˆ™์†Œ, ์˜ˆ์•ฝ, ํšŒ์›์˜ ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค๊ณ ์ž ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋”๋ฏธ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ™์†Œ 20๋งŒ๊ฐœ, ์˜ˆ์•ฝ 100๋งŒ๊ฐœ, ํšŒ์› 1๋งŒ๋ช…์„ ๋งŒ๋“ค๊ณ ์ž ํ•˜์˜€์Šต๋‹ˆ๋‹ค.์ด ์ค‘, ์ˆ™์†Œ 20๋งŒ๊ฐœ๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์—์„œ ์ƒ๊ธด ์ผ์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. 20๋งŒ๊ฐœ ์ˆ™์†Œ ๋ฐ์ดํ„ฐ๋ฅผ Java ์ฝ”๋“œ๋กœ ์ˆ™์†Œ 1๊ฐœ๋งˆ๋‹ค INSERT INTO ์ฟผ๋ฆฌ๋ฅผ DB์— ๋‚ ๋ ธ๋”๋‹ˆ DB connection timeout ๋ฌธ์ œ๋ฅผ ๋งˆ์ฃผํ–ˆ์Šต๋‹ˆ๋‹ค. - ๊ณ ๋ คํ•œ ๋ฐฉ์•ˆMySQL์˜ ๋ ˆ์ฝ”๋“œ๋Š” ํ…Œ์ด๋ธ” ๋‹จ์œ„์˜ ํŒŒ์ผ๋กœ ์ €์žฅ๋œ๋‹ค๋Š” ์ ์— ์ฐฉ์•ˆํ•œ csvํŒŒ์ผ ์‚ฌ์šฉ๋Œ€๋Ÿ‰ ์‚ฝ์ž…์— ํŠนํ™”๋œ ๊ธฐ์ˆ ์ธ Spring Batch - 2๊ฐ€์ง€ ์ด์œ ๋กœ csvํŒŒ์ผ์„ ์ด์šฉํ•˜๊ธธ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.ํ”„๋กœ์ ํŠธ ๋‚จ์€ 1์ฃผ ๋™์•ˆ ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด์•ผ๋œ๋‹ค๋Š” ์ ๋”๋ฏธ ..
[๋™์‹œ์„ฑ ์ œ์–ด] ์œ ๋‹ˆํฌ ์ œ์•ฝ์กฐ๊ฑด์„ ํ™œ์šฉํ•ด 1 ๊ฑด์˜ ์˜ˆ์•ฝ๋งŒ ์ €์žฅ โญ์š”๊ตฌ์‚ฌํ•ญ์ฝ”๋“œ์Šค์ฟผ๋“œ์˜ Airbnb ํ”„๋กœ์ ํŠธ ์ค‘๊ฐ™์€ ์ˆ™์†Œ์— ์‚ฌ๋žŒ A ์™€ ์‚ฌ๋žŒ B ๊ฐ€ ๋™์‹œ์— ์˜ˆ์•ฝ์„ ์š”์ฒญํ•  ๊ฒฝ์šฐ, ํ•œ ๊ฑด์˜ ์˜ˆ์•ฝ๋งŒ ์„ฑ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.(๊ฐ™์€ ์ˆ™์†Œ๋ฅผ ์‚ฌ๋žŒ A์™€ ์‚ฌ๋žŒ B๊ฐ€ ๋™์‹œ์— ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋˜๋‹ˆ๊นŒ!)โญ๊ณ ๋ฏผ๊ทธ๋ž˜์„œ, ๋™์‹œ์— ์˜ˆ์•ฝ ์š”์ฒญ์„ ๋ง‰๊ธฐ ์œ„ํ•ด๋น„๊ด€์  ๋ฝ๋‚™๊ด€์  ๋ฝDB์˜ ์œ ๋‹ˆํฌ ์ œ์•ฝ์กฐ๊ฑด์„ ๊ณ ๋ฏผํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.โญํ•ด๊ฒฐ ๊ณผ์ •์˜ˆ์•ฝ์ด ์ €์žฅ๋˜๋Š” ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.@Transactionalpublic BookingResponse create(BookingSaveRequest request) { // ์š”์ฒญํ•œ ์˜ˆ์•ฝ์ด ๊ธฐ์กด ์˜ˆ์•ฝ์˜ ์ผ์ •๊ณผ ์ค‘๋ณต๋˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋กœ์ง Long bookedStayCount = bookingRepository.countBookedStay(request.getStayId(), re..
[Querydsl] Expressions.dateTemplate, timeTemplate ์‚ฌ์šฉ๊ธฐ Querydsl ์˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•์€ ์†Œ๊ฐœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Querydsl ์„ ํ•™์Šต ์ค‘์— ์ž‘์„ฑํ•œ ๊ธ€์ด๊ธฐ ๋•Œ๋ฌธ์— ์†Œ๊ฐœํ•œ ๋ฐฉ๋ฒ•์ด ์ตœ๊ณ ์˜ ๋ฐฉ๋ฒ•์ด ์•„๋‹ ์ˆ˜ ์žˆ์Œ์„ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค๐Ÿ™‡‍โ™‚๏ธ๊ฐœ๋ฐœํ™˜๊ฒฝJDK 17, Querydsl 5.0.0, Spring boot 3.xโญ์„œ๋ก ์ฝ”๋“œ์Šค์ฟผ๋“œ ์—์–ด๋น„์•ค๋น„ ํด๋ก  ํ”„๋กœ์ ํŠธ ์ค‘, ์‚ฌ์šฉ์ž ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ˆ™์†Œ๊ฐ€ ๊ฒ€์ƒ‰๋˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ–ˆ์Šต๋‹ˆ๋‹ค.์‚ฌ์šฉ์ž๊ฐ€ 6/19 ~ 6/20 ๋ฅผ ์ˆ™์†Œ ๊ฒ€์ƒ‰ ์กฐ๊ฑด์œผ๋กœ ๋“ฑ๋กํ•˜๋ฉด,์„œ๋ฒ„์—์„œ๋Š” 6/19 ~ 6/20 ๊นŒ์ง€ ์ด์šฉ ๊ฐ€๋Šฅ ํ•œ ์ˆ™์†Œ ID(์˜ˆ์•ฝ ๋˜์–ด์žˆ์ง€ ์•Š์€ ์ˆ™์†Œ ID) ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด,์ˆ™์†Œ ID๊ฐ€ 1์ธ ์ˆ™์†Œ์— `6/19 PM15:00 ~ 6/20 AM11:00` ์ธ ์˜ˆ์•ฝ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.๋งŒ์•ฝ, ์‚ฌ์šฉ์ž๊ฐ€ 6/20 ~ 6/21 ์— ์ด์šฉ๊ฐ€๋Šฅํ•œ ์ˆ™์†Œ๋ฅผ ์ฐพ๋Š”๋‹ค๋ฉด..