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

Spring batch - JobInstanceAlreadyCompleteException ํ•ด๊ฒฐ RunIdIncrementer - ์™„์ „ํžˆ uniqueํ•˜์ง€ ์•Š๋‹ค. JobInstanceAlreadyCompleteException ํ˜น์€ JobExecutionAlreadyRunningException์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ batch job์˜ run.id ์™€ job parameter๊ฐ€ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์ผ ํ™•๋ฅ ์ด ํฌ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด spring batch์—์„œ run.id๋ฅผ ์ž๋™์œผ๋กœ 1์”ฉ ์ฆ๊ฐ€์‹œ์ผœ ๋™์ผํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•œ๋‹ค. @Bean public Job myBatchJob() { return jobBuilderFactory.get("myBatchJob") .incrementer(new RunIdIncrementer()) // RunIdIncrementer ์ ์šฉ .st..
๋งˆ์ง€๋ง‰ 1์Šน ๋‘ ์‹œ๊ฐ„ ์ „ ํ•ฉ๊ฒฉ ๋ฉ”์ผ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์ตœ์ข… ๋ฉด์ ‘์ด ์‹์€๋•€์ด ๋‚  ์ •๋„๋กœ ์–ด๋ ค์› ์–ด์„œ ์ฐจ๋ผ๋ฆฌ ๋–จ์–ด์กŒ๋‹ค ์ƒ๊ฐํ•˜์ž. ๊ทธ๊ฒŒ ๋งˆ์Œ ํŽธํ•˜๋‹ค๋Š” ์ƒ๊ฐ์œผ๋กœ ๊ธฐ๋Œ€๋ฅผ ์ ‘์—ˆ์—ˆ์–ด์š”. ์ •๋ง ๊ฐ€๊ณ  ์‹ถ์€ ํšŒ์‚ฌ๋ผ ๋” ๊ทธ๋žฌ๋‚˜ ๋ด์š”. ๋Œ์•„๋ณด๋‹ˆ ์˜ฌํ•ด 8์›”์— ์กธ์—…ํ•˜๋Š” ์•„์ง ํ•™๋ถ€์ƒ์ด์ง€๋งŒ ๋ฒŒ์จ 1๋…„ ๋™์•ˆ ์ทจ์—… ์ค€๋น„๋ฅผ ํ–ˆ๋„ค์š”. ๊ทธ๋™์•ˆ ๋งŽ์ด ๊ธฐ๋Œ€ํ•˜๊ณ  ๋–จ์–ด์ง€๊ณ  ์‹ค๋งํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ฒซ ๋ฒˆ์งธ ๊ณต์ฑ„์—์„œ ๋–จ์–ด์กŒ์„ ๋•Œ, ํ•˜๋ฃจ์— ๋ถˆํ•ฉ๊ฒฉ ํ†ต์ง€๋ฅผ 3๋ฒˆ ๋ฐ›์•˜์„ ๋•Œ, ์ตœ์ข…์—์„œ ๋–จ์–ด์งˆ ๋•Œ ๊ฝค๋‚˜ ๋งˆ์Œ์ด ์•„ํŒ ์–ด์š”. ์ œ ์ฃผ๋ณ€์—๋Š” ํ•œ ํ•™๊ธฐ ๋‚ด์— ์ทจ์—…์— ์„ฑ๊ณตํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์•˜์–ด์„œ ๋” ์ƒ๋Œ€์ ์œผ๋กœ ์ œ๊ฐ€ ์ž‘๊ฒŒ ๋Š๊ปด์กŒ์–ด์š”. ํ•ฉ๊ฒฉํ•œ ์ง€ ๋ช‡ ์‹œ๊ฐ„์ด๋‚˜ ๋๋‹ค๊ณ  ๋ญ˜ ์•„๋Š” ๋“ฏ์ด ๊ธ€์„ ์ ๋Š” ๊ฒŒ ์›ƒ๊ธฐ์ง€๋งŒ, ์‚ฌ์‹ค ๋„ˆ๋ฌด ํ•˜๊ณ  ์‹ถ๋˜ ์ด์•ผ๊ธฐ, ๋Š๊ผˆ๋˜ ๊ฒƒ๋“ค์— ๋Œ€ํ•ด ๋งํ•  ์ž๊ฒฉ์„ ์Šค์Šค๋กœ์—๊ฒŒ ๋ถ€์—ฌ๋ฐ›์€ ๊ฒƒ ๊ฐ™์•„์„œ ๋˜ ..
๋ณด์ƒ ๋ฐ›๋Š” ๋‚  ๋ณดํ˜ธ๋˜์–ด ์žˆ๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค.
์ผ๊ธฐ๋ฅผ ๋ชป์“ฐ๋Š” ์ด์œ  ๋ณดํ˜ธ๋˜์–ด ์žˆ๋Š” ๊ธ€์ž…๋‹ˆ๋‹ค.
JDBC Templete + PostgreSql ERROR (Can't infer the SQL type to use for an instance of java.util.ArrayList.) org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of java.util.ArrayList. Use setObject() with an explicit Types value to specify the type to use. ์›ํ•˜๋˜ ์ž‘์—… ๊ฐ๊ฐ ๊ฒ€์ƒ‰ํ–ˆ์„ ์‹œ Query์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์ง€๋Š” ๊ฒƒ์„ ์šฐ๋ คํ•ด list์•ˆ์— id๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ฐ€์ ธ์˜ค๋Š” SQL์„ ์งœ๋ ค๊ณ  ํ–ˆ๋‹ค. select * from public.game_id_name where app_id in (?) ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์ฝ”๋“œ ํ•˜์ง€๋งŒ ์œ„์˜ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ  postgresql์˜ ๊ฒฝ์šฐ java list ํƒ€์ž…์œผ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. public Lis..
Salenote๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ์ด๊ฑฐ ํ•ด๋ณด์ž UML ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ ์ตœ๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค ์ด์šฉํ•˜๊ธฐ JDBC Templete ์ตํžˆ๊ธฐ ๋˜๋„๋ก ์ˆœ์ˆ˜ํ•œ ์ž๋ฐ”์ฝ”๋“œ๋กœ Junit ํ…Œ์ŠคํŠธ AOP ์‚ฌ์šฉ nGrinder๋กœ ์„ฑ๋Šฅ ํ‰๊ฐ€
domain, entity, dao, dto, vo ?? Salenote์˜ ๊ฒฝ์šฐ WAS๊ฐ€ DB๋ฅผ ๊ตฌ์„ฑํ•˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ์ž‘์—…๋งŒ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— (MVP ๊ธฐ์ค€) JPA๋ฅผ ์‚ฌ์šฉํ•  ์ด์œ ๊ฐ€ ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ด JDBC Templete๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ๋ง‰์ƒ Salenote ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋‹ˆ ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ class๋ฅผ ๋ถ„๋ฅ˜ํ• ์ง€, ์ด๋ฆ„์€ ๋ญ˜๋กœ ํ• ์ง€ ๊ณ ๋ฏผ์ด ๋๋‹ค. domain, entity, dao, dto, vo์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ๊ฐœ๋…์ด ์žก๊ธฐ์œ„ํ•ด ๋‹ค์–‘ํ•œ ํฌ์ŠคํŒ…์„ ๋‘˜๋Ÿฌ๋ณธ ๋’ค ๋‚˜๋ฆ„๋Œ€๋กœ ์ •๋ฆฌํ–ˆ๋‹ค. ๊ฒฐ๋ก ์ ์œผ๋กœ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋กœ์ง์„ ํ˜•์„ฑํ–ˆ๋‹ค. 0. client์—๊ฒŒ ์š”์ฒญ์ด ์˜ด 1. controller๊ฐ€ ๋ฐ›์•„ service ๋กœ์ง ์‹คํ–‰ 2. service๋Š” dao๋ฅผ ์‹คํ–‰ (์„œ๋น„์Šค ํŠน์„ฑ ์ƒ WAS์—์„œ schema๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์•„ domain์€ ํ•„์š” ์—†์Œ!) 3. SQL๋ฅผ ์ž‘์„ฑํ•ด๋‘” dao์—..
์น ๋ฆฐ์ง€์˜ ์ƒˆ ํ”„๋กœ์ ํŠธ Salenote ์น ๋ฆฐ์ง€๋Š” ํ•™๊ต ๋™๊ธฐ 4๋ช…์ด์„œ ๊พธ๋ฆฐ ๊ฐœ๋ฐœ ํŒ€์ด๋‹ค. ๋งˆ์นจ ์นœํ•œ ์นœ๊ตฌ๋“ค 4๋ช…์ด ๋””์ž์ธ, ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐฑ์—”๋“œ, ํ’€์Šคํƒ์„ ๊ฐ๊ฐ ์ง€๋งํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋”” ํ•˜๋‚˜ ๋นˆ ๊ณณ ์—†์ด ํŒ€์„ ๊พธ๋ฆด ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์น ๋ฆฐ์ง€์˜ ์ƒˆ ํ”„๋กœ์ ํŠธ๋Š” ์ŠคํŒ€์„ ์ด์šฉํ•œ ์„œ๋น„์Šค๋‹ค steam์€ ๋ฏธ๊ตญ ๊ฒŒ์ž„ ๊ฐœ๋ฐœ, ๋ฐฐ๊ธ‰์‚ฌ valve๊ฐ€ ๊ฒŒ์ž„ ์—…๋ฐ์ดํŠธ ์„œ๋น„์Šค๋ฅผ ์ž๋™ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“  ์‚ฌ์ดํŠธ๋‹ค. ํ˜„์žฌ๋Š” ๋น„๋””์˜ค ๊ฒŒ์ž„์˜ ๋ฐฐํฌ์™€ ํŒ๋งค๋กœ ํ™•์žฅํ•˜๋ฉฐ ์ „ ์„ธ๊ณ„ ๊ฒŒ์ž„์ธ๋“ค์˜ ๊ฒŒ์ž„ ์ƒ์  ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๋‹ค. Steam Store Steam is the ultimate destination for playing, discussing, and creating games. store.steampowered.com steam์€ ๊ฒŒ์ž„ ์ •๋ณด์™€ ๊ฒ€์ƒ‰์— ์ตœ์ ํ™” ๋˜์–ด ์žˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ชจ๋“  ..

๋ฐ˜์‘ํ˜•