๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

๐Ÿ’Š Java & Kotlin & Spring57

[Java ์‹ฌํ™”] Generic(์ œ๋„ค๋ฆญ)์„ ํ•ต์‹ฌ๋งŒ ์ดํ•ดํ•ด๋ณด์ž. ์ด ์‹œ๋ฆฌ์ฆˆ๋Š” Spring์—์„œ Generic์„ ์ด์šฉํ•˜์—ฌ CRUD ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด์ž.์™€ ์ด์–ด์ง€๋Š” ๊ธ€ ์ž…๋‹ˆ๋‹ค. Generic(์ œ๋„ˆ๋ฆญ)์„ ํ•ต์‹ฌ๋งŒ ์ดํ•ดํ•ด๋ณด์ž. Spring์—์„œ Generic์„ ์ด์šฉํ•˜์—ฌ CRUD ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•ด๋ณด์ž. ์ด ๊ธ€์€ ์ด๋ก ์— ๊ด€๋ จํ•œ ๊ธ€์ด๊ณ  ์‹ค์ „์—์„œ ์–ด๋–ป๊ฒŒ ์“ฐ์ด๋Š”์ง€ ๊ถ๊ธˆํ•˜์‹œ๋‹ค๋ฉด 2๋ฒˆ ๋งํฌ๋ฅผ ํด๋ฆญํ•ด์„œ ํ™•์ธํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ ๋ฐ”๋กœ Generic(์ œ๋„ˆ๋ฆญ)์œผ๋กœ ๋ถˆ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. ์ œ๋„ˆ๋ฆญ์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์™€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋Š” ์•Œ๊ฒ ๋Š”๋ฐ ์‹ค์ „์—์„œ ๋–ค ํด๋ž˜์Šค๋ฅผ ์ œ๋„ˆ๋ฆญ์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ๊ฑฐ๋‚˜ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ์ด๋ฒˆ ์‹œ๋ฆฌ์ฆˆ๊ฐ€ ํฐ ๋„์›€์ด ๋˜์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ•œ๋‹ค. ์‹œ์ž‘ํ•ด๋ณด์ž. Generic ์ œ๋„ˆ๋ฆญ์€ Java 1.5 ๋ฒ„์ „๋ถ€ํ„ฐ ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ ๋ญ ์ด๋Ÿฐ ์ด์•ผ๊ธฐ๋Š” ์ž ์‹œ ์ ‘์–ด ๋‘๊ณ  ์ œ๋„ˆ๋ฆญ์ด ๋ฌด์—‡์ด๋ฉฐ ์™œ ์ œ๋„ˆ๋ฆญ์„.. 2020. 8. 27.
[Spring-Core] ์Šคํ”„๋ง์˜ ์ปค๋งจ๋“œ ๊ฐ์ฒด(Command Object)๋ฅผ ๋น ๋ฅด๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด์ž. ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ Spring-Command Object์ด๋‹ค. ์ปค๋งจ๋“œ ๊ฐ์ฒด๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Spring์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์ด๋ผ๋Š” ๊ฐ€์ •์„ ํ•˜๊ณ  ๋ถˆํŽธํ•จ์„ ๋จผ์ € ์ƒ๊ฐํ•ด๋ณด๊ณ  Spring์ด ์ด ๋ถˆํŽธํ•จ์„ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•ด๋‚˜๊ฐ€๋ ค๊ณ  ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋กํ•˜์ž. ๋ถˆํŽธํ•จ : ๊ธฐ์กด์˜ Http ์š”์ฒญ ์šฐ๋ฆฌ๊ฐ€ ๋งŒ์•ฝ request๋กœ 100๊ฐ€์ง€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. public String joinMember(HttpServletRequest request) { String username = request.getParameter("username"); String password = request.getParameter("password"); String address = request.getParameter("addre.. 2020. 7. 30.
[Java ์‹ฌํ™”] List ์ปฌ๋ ‰์…˜์—์„œ ์ฐธ์กฐ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์–ด๋–ค ๊ฒƒ์œผ๋กœ ํ•ด์•ผํ• ๊นŒ? ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๊ฒƒ์€ ArrayList๋‚˜ LinkedList๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…์€ ์–ด๋–ค ๊ฒƒ์œผ๋กœ ํ•ด์•ผํ• ๊นŒ? ์ด๋‹ค. ์ด๊ฒŒ ๋ฌด์Šจ ๋ง์ด๋ƒ๋ฉด ํ•„์ž๋Š” ์ž๋ฐ”๋ผ๋Š” ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ ๋‹ค์–‘ํ•œ ์ฝ”๋“œ๋ฅผ ๋ด์™”์—ˆ๋Š”๋ฐ, ๊ฐ™์€ ์ผ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฝ”๋“œ ์ด๋”๋ผ๋„ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ง  ๊ฒฝ์šฐ๋ฅผ ๋ณด์•˜๋‹ค. ๊ทธ ์ค‘ ๋Œ€ํ‘œ์ ์ธ๋ฐ ๋ฐ”๋กœ List ์ปฌ๋ ‰์…˜์—์„œ์˜ ์ฐธ์กฐ๋ณ€์ˆ˜ ํƒ€์ž…์ด๋‹ค. ์ด ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์ด ๋‘˜์˜ ์ฐจ์ด๋ฅผ ๋ช…ํ™•ํžˆ ๋‹ต๋ณ€์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์ด๋ผ๋ฉด ๋‚ด ๊ธ€์„ ๋ณด์ง€ ์•Š์•„๋„ ๋œ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ์˜ค๋Š˜ ์•Œ์•„๋ณผ ๋‚ด์šฉ์ด๋‹ค. ์ด ๋‘˜์˜ ์ฐจ์ด๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์ „์— ๋‹คํ˜•์„ฑ์ด๋ผ๋Š” ๊ฐœ๋…๊ณผ ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ์–ด๋А์ •๋„ ์ดํ•ด๊ฐ€ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์˜ค๋Š˜์€ ๋‹คํ˜•์„ฑ๊ณผ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์•Œ์•„๋ณด๋Š” ํฌ์ŠคํŒ…์ด ์•„๋‹ˆ๋ฏ€๋กœ ์ƒํ™œ์ฝ”๋”ฉ์˜ ๋‹คํ˜•์„ฑ ๊ฐ•์˜๊ณผ ์ƒํ™œ์ฝ”๋”ฉ์˜ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ•์˜๋ฅผ ๋ด๋ณธ๋‹ค๋ฉด ์ดํ•ด๊ฐ€ ๋น ๋ฅด๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค.. 2020. 7. 29.
[Java ์‹ฌํ™”] Java ์—์„œ Comparable๋กœ ์ •๋ ฌ ๊ธฐ์ค€ ๋ฐ”๊พธ๊ธฐ. Java์—์„œ comparator๋กœ ์ •๋ ฌ ๊ธฐ์ค€ ๋ฐ”๊พธ๊ธฐ ์ž๋ฐ”๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด๋ฅผ ํ•˜๋‹ค ๋ณด๋ฉด ํŠน์ • ์กฐ๊ฑด์— ์˜ํ•œ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ๊ฐ€ ์žˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ž๋ฐ”์—์„œ๋Š” ์ •๋ ฌ์„ ์œ„ํ•ด์„œ Arrays.sort() ์˜ static ๋ฉ”์„œ๋“œ๋‚˜ ,Collections.sort()์˜ static ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ์ด๋Š” ๊ธฐ๋ณธ ์ •๋ ฌ์ธ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ์กฐ๊ฑด์— ์˜ํ•œ ์ •๋ ฌ(๋‹ค์ฐจ์› ๋ฐฐ์—ด์˜ ์ •๋ ฌ, ๊ฐ์ฒด ์ •๋ ฌ, ์กฐ๊ฑด ์ •๋ ฌ)์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ๋ž€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด ๋ถˆํŽธํ•จ์„ ํ•ด์†Œํ•ด๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐ€์ง€์˜ ์กฐ๊ฑด ์ •๋ ฌ ๋ฐฉ์‹์ด ์กด์žฌํ•˜๋Š”๋ฐ ๋ฐ”๋กœ Comparator, Comparable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ด์šฉํ•œ ์ •๋ ฌ ๋ฉ”์„œ๋“œ ์žฌ์ •์˜์ด๋‹ค. ํ•˜์ง€๋งŒ ๋‘ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ„์˜ ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ฅธ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ์ฐจ์ด๋ถ€ํ„ฐ ๋ช…ํ™•ํ•˜๊ฒŒ ์งš๊ณ  ๋„˜์–ด๊ฐ€์ž. Compara.. 2020. 2. 24.
[Spring & SpringBoot-JPA] JPA Query Method - JPA ์ฟผ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์•Œ์•„๋ณด๊ณ  ์‚ฌ์šฉํ•˜์ž. Hibernate์˜ QueryMethod ์šฐ๋ฆฌ๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์› ๋˜ ์˜ˆ์ œ๋ฅผ ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ€๋ณ๊ฒŒ ๋ด๋ณด์ž. Test ์ฝ”๋“œ์ด๋˜ ์–ด๋–ค ์„œ๋น„์Šค์ด๋˜ ๋ชจ๋‘ findById() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ id ๊ฐ’์œผ๋กœ ๊ฒ€์ƒ‰์„ ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์šฐ๋ฆฌ๊ฐ€ ํšŒ์› ๊ฒ€์ƒ‰์„ ํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํšŒ์› account ์ •๋ณด๋ฅผ ํ†ตํ•ด์„œ ๊ฒ€์ƒ‰์„ ํ•œ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ˜„์žฌ DB๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ์œผ๋‹ˆ id ์นผ๋Ÿผ์„ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์ง€, ์‹ค์ œ ์„œ๋น„์Šค์—์„œ id๋ฅผ ์™ธ์šฐ๊ธฐ๋ž€ ์ •๋ง ์–ด๋ ค์šด ์ผ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋Ÿฐ ์ ์„ QueryMethod๋ฅผ ํ†ตํ•ด์„œ ํšŒ์›์˜ account๋กœ ๊ฒ€์ƒ‰์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. findById๋Š” select๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์šฐ๋ฆฌ๋Š” findById() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ id ๊ฐ’์œผ๋กœ ๊ฒ€์ƒ‰์„ ํ–ˆ๋Š”๋ฐ ์ด๋Š” ์ •ํ™•ํžˆ ๋ง ํ•˜๋ฉด findBy๋ผ๋Š” ๋ฌธ๋ฒ•์„ ๋ณด๋ฉด JPA๊ฐ€ ์ž๋™์œผ๋กœ se.. 2020. 2. 17.
[Spring & SpringBoot-JPA] DB ์—ฐ๊ด€๊ด€๊ณ„ ํ…Œ์ด๋ธ”์„ Spring JPA๋ฅผ ์ด์šฉํ•˜์—ฌ CRUD ํ•˜๊ธฐ. ์ง€๋‚œ ์‹œ๊ฐ„์— ์šฐ๋ฆฌ๋Š” DB ์—ฐ๊ด€๊ด€๊ณ„ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ๊นŒ์ง€ ์ง„ํ–‰์„ ํ•˜์˜€๋‹ค. ์—ฐ๊ด€๊ด€๊ณ„ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๋ฉฐ 1:N ๊ณผ N:1์˜ ์—ฐ๊ด€๊ด€๊ณ„์— ๋Œ€ํ•ด์„œ ํ…Œ์ด๋ธ”์„ ์ž‘์„ฑํ•˜์˜€๊ณ  ์ด์ œ๋Š” Spring์—์„œ ์‹ค์ œ๋กœ ๊ด€๊ณ„๋ฅผ ํ†ตํ•œ Data ํ˜ธ์ถœ์„ ํ•™์Šตํ•ด๋ณด์ž. ํ˜„์žฌ ํ…Œ์ด๋ธ”์˜ ์—ฐ๊ด€ ๊ด€๊ณ„ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๋•Œ ์—ฐ๊ด€ ๊ด€๊ณ„๋ฅผ ํ’€์–ด๋ณด์ž๋ฉด user๊ณผ item์˜ ๊ด€๊ณ„ : ์„œ๋กœ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋– ํ•œ ๊ด€๊ณ„๋„ ๋งบ์ง€ ์•Š๊ณ  ์žˆ๋‹ค. user๊ณผ order_list์˜ ๊ด€๊ณ„ : order_list๊ฐ€ ํ˜„์žฌ user์˜ id๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— (orderList)n:1(user)์˜ ๊ด€๊ณ„ ์ด๋‹ค. item๊ณผ order_list์˜ ๊ด€๊ณ„ : order_list๊ฐ€ ํ˜„์žฌ item์˜ id๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— (orderList)n:1(item)์˜ ๊ด€๊ณ„ ์ด๋‹ค. .. 2020. 2. 16.