์ „์ฒด ๊ธ€

์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ํƒ„ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ redirect ์‹œํ‚ค๋Š” ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? ๐Ÿง โœ… ์ธํ„ฐ์…‰ํ„ฐ ํ๋ฆ„ preHandle -> ์ปจํŠธ๋กค๋Ÿฌ -> postHandle -> afterCompletion ๊ณ ๋ฏผ URL /test1๋กœ ๋“ค์–ด์˜จ ์š”์ฒญ์ด ์–ด๋Š ์ธํ„ฐ์…‰ํ„ฐ๋ฅผ ํƒ€๊ฒŒ ๋œ๋‹ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰๋  ๊ฒƒ์ด๋‹ค. ์ผ๋‹จ preHandle๋ฅผ ํƒ„๋‹ค. ๊ทธ ๋‹ค์Œ /A๋ฅผ RequestMappingํ•œ ์ปจํŠธ๋กค๋Ÿฌ์˜ ๋กœ์ง์„ ํƒ€๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ /test2๋กœ redirect๋ฅผ ์‹œํ‚จ๋‹ค๋ฉด..? postHandle ๋ฉ”์„œ๋“œ๋ฅผ ํƒ€๊ฒŒ ๋ ๊นŒ? ๊ฒฐ๋ก  ๊ฒฐ๋ก ์€ postHandle๋„ ํƒ„๋‹ค. afterCompletion๊นŒ์ง€ ๋ชจ๋‘ ํƒ„๋‹ค. [uri : /test1] preHandle [uri : /test1] controller , redirect [uri : /te..
CLOB ์˜ค๋ผํด ORA-24816 ์—๋Ÿฌ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ๐Ÿง๊ฐ„ํ—์ ์œผ๋กœ๐Ÿง ๋ฐ์ดํ„ฐ ์‚ฌ์ด์ฆˆ๊ฐ€ ํด ๋•Œ, ORA-03146(๋ฒ„ํผ ๊ธธ์ด ๋ถ€์ ํ•ฉ) ์—๋Ÿฌ ๋ฐœ์ƒ ๋‚˜์˜ ๊ฒฝ์šฐ์—๋Š” INSERT, UPDATE ์‹œ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์œผ๋‚˜ MERGE๋ฌธ์—์„œ ์—๋Ÿฌ ๋ฐœ์ƒ. ๊ตฌ๊ธ€๋ง ์‹œ ๋ช…ํ™•ํ•œ ์›์ธ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์กด์žฌ X -> ๋Œ€์•ˆ์œผ๋กœ empty_clob()์œผ๋กœ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ํ›„ ๋”ฐ๋กœ UPDATE๋ฌธ ์ˆ˜ํ–‰์œผ๋กœ ํ•ด๊ฒฐ CUD์‹œ, CLOB์ปฌ๋Ÿผ์„ ์ œ์ผ ๋งˆ์ง€๋ง‰ ์ˆœ์„œ๋กœ ๋ณ€๊ฒฝํ–ˆ์„ ๋•Œ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค๋Š” ์ผ€์ด์Šค๋„ ์กด์žฌ ๐Ÿ‘ Reference ๋”๋ณด๊ธฐ https://velog.io/@kimbad1992/Oracle-MERGE-INTO-%EA%B5%AC%EB%AC%B8%EC%97%90%EC%84%9C%EC%9D%98-CLOB-%ED%83%80%EC%9E%85-INSERT-%EC%8B..
Python๋กœ ํฌ๋กค๋งํ•ด์„œ ์ž๋™์œผ๋กœ ๊ธ€ ์ž…๋ ฅํ•˜๊ธฐ ์ตœ๊ทผ ํšŒ์‚ฌ์—์„œ ์ผํ•˜๋˜ ์ค‘, HTML ๋‚ด์šฉ์„ ํฌ๋กค๋งํ•ด ํšŒ์‚ฌ ๋‚ด ์‹œ์Šคํ…œ๋‚ด์— ๋ฒ„์ „๋ณ„๋กœ ๋“ฑ๋กํ•ด์•ผ ํ•˜๋Š” ์—…๋ฌด๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ผ์ด ์ƒ๊ฒผ๋‹ค. ์‚ฌ์‹ค ๋ณต๋ถ™ํ•ด๋„ ๋˜๋Š” ์ผ์ด๊ธด ํ•˜์ง€๋งŒ, ์€๊ทผ ๋ณต๋ถ™ํ•ด์•ผ ํ•˜๋Š” ์–‘์ด ๋งŽ์•˜๊ธฐ ๋•Œ๋ฌธ์— "๋‚ด๊ฐ€ ๊ฐœ๋ฐœ์ž์ธ๋ฐ..! ๋‹จ์ˆœ๋ฐ˜๋ณต์„ ํ•  ์ˆœ ์—†์ง€!" ์š”๋ก  ๋งˆ์Œ์ด ๋“ค์–ด (ใ…‹ใ…‹ใ…‹ ์•Œ์ˆ˜์—†๋Š” ๋งˆ์Œ) ๊ทธ๋ƒฅ ๋š๋”ฑ ๋งŒ๋“ค์—ˆ๋‹ค. ๋ถ„๋ช… ํŒŒ์ด์ฌ์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋„ ํ’€์—ˆ๋Š”๋ฐ 2๋…„์ „์ด๋ผ ๊ธฐ์–ต์ด ํ•˜๋‚˜๋„ ๋‚˜์ง€ ์•Š๋”๋ผ ๐Ÿง ๋ถ„๋ช… ํŒŒ์ด์ฌ ์ •๋ฆฌ๋„ ํ–ˆ๋˜ ๊ฑฐ ๊ฐ™์€๋ฐ.. ๋‹ค ์–ด๋””๊ฐ”์ง€.. ใ…‹ใ…‹ ์•„๋ฌดํŠผ, ๊ทธ๋ž˜์„œ ์ด๋ฒˆ์—” ๋‹ค์Œ์— ๊ณ ์ƒํ•  ๋‚˜๋ฅผ ์œ„ํ•ด ๊ธ€์„ ๋‚จ๊ฒจ๋†“๊ธฐ๋กœ ํ–ˆ๋‹ค. ๊ธ€์„ ์‹œ์ž‘ํ•˜๊ธฐ์ „์—, ์ฐธ๊ณ ๋กœ ์ €๋Š” Python ๊ฐœ๋ฐœ์ž๋„ ์•„๋‹ˆ๊ณ  2๋…„์ „์— ๋ฐฐ์› ๋˜ ๊ธฐ์–ต + 2์‹œ๊ฐ„๋งŒ์— ๊ฐœ๋ฐœํ•œ ๋‚ด์šฉ์ด์—ฌ์„œ.. ๊ฐ€์žฅ ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•..
Bean Validation ์ด๋ž€? ๋จผ์ € Bean Validation์€ ํŠน์ •ํ•œ ๊ตฌํ˜„์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ Bean Validation 2.0(JSR-380)์ด๋ผ๋Š” ๊ธฐ์ˆ  ํ‘œ์ค€์ด๋‹ค. ์‰ฝ๊ฒŒ ์ด์•ผ๊ธฐํ•ด์„œ ๊ฒ€์ฆ ์• ๋…ธํ…Œ์ด์…˜๊ณผ ์—ฌ๋Ÿฌ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ์Œ์ด๋‹ค. Bean Validation์„ ๊ตฌํ˜„ํ•œ ๊ธฐ์ˆ ์ค‘์— ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌํ˜„์ฒด๋Š” ํ•˜์ด๋ฒ„๋„ค์ดํŠธ Validator์ด๋‹ค. ๊ณต์‹ ์‚ฌ์ดํŠธ: http://hibernate.org/validator/ ๊ณต์‹ ๋ฉ”๋‰ด์–ผ: https://docs.jboss.org/hibernate/validator/6.2/reference/en-US/html_single/ ๊ฒ€์ฆ ์• ๋…ธํ…Œ์ด์…˜ ๋ชจ์Œ: https://docs.jboss.org/hibernate/validator/6.2/reference/en-US/ html_s..
๋ฉ”์„ธ์ง€ ๋ฉ”์„ธ์ง€๋ฅผ ํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ(messages.properties ํŒŒ์ผ์—์„œ ๊ด€๋ฆฌ) ๋ฌธ์ž์—ด์„ ํ•˜๋“œ์ฝ”๋”ฉํ•˜์ง€ ์•Š๊ณ  ํŒŒ์ผ์— ์žˆ๋Š” ๊ฐ’์„ ์ฝ์–ด์™€์„œ ๋ณด์—ฌ์ค€๋‹ค. item=์ƒํ’ˆ item.id=์ƒํ’ˆ ID item.itemName=์ƒํ’ˆ๋ช… item.price=๊ฐ€๊ฒฉ item.quantity=์ˆ˜๋Ÿ‰ ๊ตญ์ œํ™” ๋‚˜๋ผ๋ณ„๋กœ ๋ฉ”์„ธ์ง€ ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•ด์„œ ๊ฐ ์–ธ์–ด์— ๋งž๋Š” ๋ฉ”์„ธ์ง€ ํŒŒ์ผ์„ ๋ณด์—ฌ์ฃผ๋Š” ๊ธฐ๋Šฅ. ์œ ์ €๊ฐ€ ์ ‘๊ทผํ•œ ๋‚˜๋ผ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์€ HTTP accept-language ํ—ค๋” ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์–ธ์–ด๋ฅผ ์„ ํƒํ•˜๊ฒŒ ํ•˜๊ณ  ์ฟ ํ‚ค ๊ฐ’์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค. -> LocaleResolver ์‚ฌ์šฉ Locale์ด en_US ์˜ ๊ฒฝ์šฐ messages_en_US -> messages_en -> messages ์ˆœ์„œ๋กœ ์ฐพ๋Š”๋‹ค. ๊ตฌ์ฒด์ ์ธ ๊ฒƒ์ด ์žˆ์œผ๋ฉด ๊ตฌ..
YURI๐Ÿ•๐Ÿ“๐Ÿถ
๐Ÿ•