REST API ๋ณด์•ˆ์€ ์–ด๋–ค์‹์œผ๋กœ ์ฒ˜๋ฆฌํ• ๊นŒ?
Project/๋‚˜๋งŒ์˜ ์˜ท์žฅ 2021. 9. 20. 00:51

https://bcho.tistory.com/807 REST API์— ๋Œ€ํ•œ ๋ณด์•ˆ REST API ๋ณด์•ˆ ์กฐ๋Œ€ํ˜‘ REST API์— ๋Œ€ํ•œ ๋ณด์•ˆ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. API ์— ๋Œ€ํ•œ ๋ณด์•ˆ์€ ์ธ์ฆ, ๋ฉ”์„ธ์ง€ ์•”ํ˜ธํ™”, ๋ฌด๊ฒฐ์„ฑ ํฌ๊ฒŒ 3๊ฐ€์ง€ ๊ด€์ ์—์„œ ๊ณ ๋ฏผํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค. 1) ์ธ์ฆ ์ธ์ฆ์€, REST API๋ฅผ ํ˜ธ์ถœํ•œ ์‚ฌ๋žŒ(ํด๋ผ์ด bcho.tistory.com

SLF4J StackOverflowError
Project/๋‚˜๋งŒ์˜ ์˜ท์žฅ 2021. 9. 18. 23:57

์ด๋ฒˆ์— ์ƒ์† ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•จ์œผ๋กœ์จ Wardrobe, Cloth, Record ์—”ํ‹ฐํ‹ฐ์˜ ์ค‘๋ณต ๊ธฐ๋Šฅ์ธ ๋Œ“๊ธ€ ๊ธฐ๋Šฅ๊ณผ ์ข‹์•„์š” ๊ธฐ๋Šฅ์„ ์Šˆํผ ํƒ€์ž… ์—”ํ‹ฐํ‹ฐ์ธ PostEntity๋กœ ์ด๊ด€์‹œํ‚ค๋Š” ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ๋ฌธ์ œ ๋ฐœ์ƒ ๊ณตํ†ต ๋กœ์ง๋“ค์„ ๊ฐ๊ฐ์˜ Service๊ฐ€ ์•„๋‹Œ PostServcie๋กœ ์ด๋™์‹œํ‚ค๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ๋Œ“๊ธ€ ๋‹ฌ๊ธฐ ๋ฉ”์„œ๋“œ์ธ writeComment()์—์„œ StackOverflowError๊ฐ€ ํ„ฐ์ง€๋ฉด์„œ ๋กœ์ง์ด ์ค‘๋‹จ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ–ˆ๋‹ค. StackOverflowError๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ถ€๋ถ„์€ SLF4J์—์„œ ์—”ํ‹ฐํ‹ฐ์˜ toString()์„ ํ˜ธ์ถœํ•˜๋ฉฐ ๋ฐœ์ƒํ•˜๋Š” ๋ถ€๋ถ„์ด์˜€๋‹ค. ์—”ํ‹ฐํ‹ฐ์˜ toString()์„ ์ถ”๊ฐ€ ์‹œ์ผœ์ฃผ๋Š” ๋ถ€๋ถ„์€ lombok์˜ @Data์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ถ€๋ถ„์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋ผ ํŒ๋‹จํ•˜์˜€๋‹ค. ๋ฌธ์ œ ์›์ธ @..

@MappedSuperClass, @Embedded, @Embeddable
Backend/SPRING 2021. 9. 15. 23:02

Spring JPA Hibernate์—์„œ Entity์˜ ์ƒ์†์— ๋Œ€ํ•ด ๊ฒ€์ƒ‰ํ•˜์—ฌ ๊ณต๋ถ€ํ•˜๋˜ ์ค‘ ์ถ”๊ฐ€์ ์œผ๋กœ ๊ถ๊ธˆํ•œ ๋ถ€๋ถ„์ด ์ƒ๊ฒจ ์ •๋ฆฌํ•ด๋ณธ๋‹ค. @MappedSuperClass ์—ฌ๋Ÿฌ ์—”ํ‹ฐํ‹ฐ์— ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ•„๋“œ๋ฅผ ์ƒ์†๋ฐ›๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ์—”ํ‹ฐํ‹ฐ๋“ค์ด ์ƒ์†๋ฐ›์•„ ์‚ฌ์šฉํ•  ํด๋ž˜์Šค ์œ„์— ์„ ์–ธํ•˜๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค๋Š” Table๊ณผ ๋งคํ•‘๋˜์ง€ ์•Š๊ณ  ๋‹จ์ˆœํžˆ ํ•„๋“œ๋ฅผ ์ƒ์†๋ฐ›๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค๊ฐ€ ๋œ๋‹ค. ์ด ํด๋ž˜์Šค๋Š” ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•  ์ผ์ด ์—†์œผ๋ฏ€๋กœ ์ถ”์ƒ ํด๋ž˜์Šค ์„ ์–ธ์ด ๊ถŒ์žฅ๋œ๋‹ค. @Embeddable (์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค! default ์ž„) ์˜ˆ๋ฅผ ๋“ค์–ด Wardrobe Entity ๋‚ด์— ํŠน์ • Writer ์ •๋ณด(String memberName, String memberId) ๊ฐ€ ๋‹ด๊ธด๋‹ค๊ณ  ํ•ด๋ณด์ž. ๊ทธ๋Ÿฐ๋ฐ memberName, memberId๋ฅผ ๋”ฐ๋กœ ๋‘๋ฉด..

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ๋ณด์„ ์‡ผํ•‘ (2020 ์นด์นด์˜ค ์ธํ„ด์‹ญ)
Computer Science/์•Œ๊ณ ๋ฆฌ์ฆ˜ 2021. 9. 15. 22:52

https://programmers.co.kr/learn/courses/30/lessons/67258?language=java ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋ณด์„ ์‡ผํ•‘ ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr ๋ฌธ์ œ ์ •๋ฆฌ 1. ์ง„์—ด๋œ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ณด์„์„ ์ ์–ด๋„ 1๊ฐœ ์ด์ƒ ํฌํ•จํ•˜๋Š” ๊ฐ€์žฅ ์งง์€ ์—ฐ์†๋œ ๊ตฌ๊ฐ„์„ ๊ตฌํ•˜์„ธ์š”. 2. ๋งŒ์•ฝ ๊ฐ€์žฅ ์งง์€ ์—ฐ์†๋œ ๊ตฌ๊ฐ„์ด ์—ฌ๋Ÿฌ๊ฐœ๋ผ๋ฉด, ๊ฐ€์žฅ ์™ผ์ชฝ์— ์œ„์น˜ํ•œ ๊ตฌ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•˜์„ธ์š”. 3. ์ง„์—ด๋œ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ณด์„์„ ์ ์–ด๋„ 1๊ฐœ ์ด์ƒ ํฌํ•จํ•˜๋Š” ๊ตฌ๊ฐ„์€ ๋ฌด์กฐ๊ฑด 1๊ฐœ ์ด์ƒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ ‘๊ทผ ๋ฐฉ๋ฒ• ์™„์ „ ํƒ์ƒ‰ ์ด ๋ฌธ์ œ๋Š” ์šฐ์„  ์ •ํ™•๋„ ํ‰๊ฐ€์™€ ํšจ์œจ์„ฑ ํ‰๊ฐ€๊ฐ€ ์กด์žฌํ•œ๋‹ค. ํšจ์œจ์„ฑ ํ‰๊ฐ€๊ฐ€ ์กด์žฌํ•œ๋‹ค..

Hibernate JPA์—์„œ ์ƒ์† ๊ตฌ์กฐ๋Š” ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์„๊นŒ?
Project/๋‚˜๋งŒ์˜ ์˜ท์žฅ 2021. 9. 14. 23:16

๋‚˜๋งŒ์˜ ์˜ท์žฅ ์„œ๋น„์Šค์— Entity์ธ Wardrobe(์˜ท์žฅ), Cloth(์˜ท), Record(์ฝ”๋””)๋Š” ๋Œ“๊ธ€์ด ๋‹ฌ๋ฆด ์ˆ˜ ์žˆ๊ณ , ์ข‹์•„์š”๊ฐ€ ๋ˆŒ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋™์ผํ•œ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ Entity์ธ Like(์ข‹์•„์š”)์™€ Comment(๋Œ“๊ธ€)์— Wardrobe, Cloth, Record๊ฐ€ ์†์„ฑ์œผ๋กœ ๋ชจ๋‘ ํฌํ•จํ•˜๊ณ  Wardrobe, Cloth, Record ๊ฐ๊ฐ์— ๋ชจ๋‘ Like์™€ Comment๋ฅผ ํฌํ•จํ•˜๋Š” ์‹์œผ๋กœ ๊ตฌํ˜„์„ ํ•˜์˜€๋‹ค. ๋ฌผ๋ก  ๊ธฐ๋Šฅ์€ ์ •์ƒ ๋™์ž‘ํ•˜์ง€๋งŒ ๊ณผ์—ฐ ์ด ๋ฐฉ๋ฒ• ๋ฐ–์— ์—†๋Š” ๊ฒƒ์ธ๊ฐ€ ์˜๋ฌธ์ด ์ƒ๊ฒผ๋‹ค. ์ด๋Ÿฐ์‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜๋ฉด ์ค‘๋ณต ์ฝ”๋“œ๊ฐ€ ๊ต‰์žฅํžˆ ๋งŽ์•„์ง€๊ณ  ๋˜ ๋™์ผํ•œ ํŠน์ง•์„ ๊ฐ€์ง„ Entity๊ฐ€ ์ถ”๊ฐ€ ๋˜๋ฉด Comment์™€ Like์™€ ๊ด€๋ จ๋œ ๋กœ์ง์„ ๋˜ ๋‹ค์‹œ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๊ตณ์ด Hib..