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์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ถ€๋ถ„์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋ผ ํŒ๋‹จํ•˜์˜€๋‹ค. ๋ฌธ์ œ ์›์ธ @..

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..

๋ณต์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ์— ํŽ˜์ด์ง•์€ ํ•„์ˆ˜!
Project/๋‚˜๋งŒ์˜ ์˜ท์žฅ 2021. 9. 14. 21:37

์ˆ˜์‹ญ, ์ˆ˜๋ฐฑ๋งŒ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๋ฒˆ์— ๋ฐ˜ํ™˜ํ•œ๋‹ค๋ฉด..? API๋ฅผ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด ๋ฐ์ดํ„ฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ฌด์กฐ๊ฑด ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ์— ์•„๋ฌด๋Ÿฐ ์กฐ์น˜ ์—†์ด ๋ฐ์ดํ„ฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž. ๋ช‡์‹ญ, ๋ช‡๋ฐฑ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ๋Š” ํฐ ์ƒ๊ด€์ด ์—†์ง€๋งŒ ๋ช‡์‹ญ๋งŒ, ๋ช‡ ๋ฐฑ๋งŒ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” API ์„ค๊ณ„์‹œ์— ํŽ˜์ด์ง• ๋กœ์ง์„ ํ•„์ˆ˜์ ์œผ๋กœ ์ ์šฉ์‹œ์ผœ์•ผ ํ•œ๋‹ค. ํŽ˜์ด์ง•์„ ์ ์šฉํ•œ API ๊ตฌํ˜„ ์˜ˆ์‹œ ๋‹ค์Œ์€ ๋‚˜๋งŒ์˜ ์˜ท์žฅ ์„œ๋น„์Šค์—์„œ ํŽ˜์ด์ง•์„ ์ ์šฉํ•œ ์˜ท ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” API ๊ตฌํ˜„ ์˜ˆ์‹œ์ด๋‹ค. @Setter @Getter public class ResponseForClothes extends PaginatedResponse { private List cont..

Entity ์ž์ฒด๋ฅผ ์‘๋‹ตํ•˜๊ฑฐ๋‚˜ Entity๋ฅผ ํฌํ•จํ•˜์ง€ ๋ง์ž.
Project/๋‚˜๋งŒ์˜ ์˜ท์žฅ 2021. 9. 13. 22:27

JSON์˜ ๋ฌดํ•œ ์ˆœํ™˜ ๊ตฌ์กฐ๋Š” ์™œ ๋ฐœ์ƒํ• ๊นŒ? ๋‚˜๋งŒ์˜ ์˜ท์žฅ ์„œ๋น„์Šค์˜ REST API ๊ตฌํ˜„ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๊ณ ์ƒํ•œ ๋ถ€๋ถ„์ด๋‹ค. ๊ฐœ๋ฐœ ์ดˆ๋ฐ˜์—๋Š” ์•„๋ฌด ์ƒ๊ฐ ์—†์ด DTO๋ฅผ ํ™œ์šฉํ•˜์ง€ ์•Š๊ณ  Entity๋ฅผ ์ง์ ‘ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋ฐ˜ํ™˜ํ–ˆ๋Š”๋ฐ ๊ฐ์ฒด๊ฐ€ ๋˜ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ๊ทธ ๊ฐ์ฒด๊ฐ€ ๋˜ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฌดํ•œ ํ˜ธ์ถœ ํ˜„์ƒ์ด ๋ฐœ์ƒํ–ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฌดํ•œ ํ˜ธ์ถœ ํ˜„์ƒ์„ ๋Œ€์ถฉ ํ‘œํ˜„ํ•˜์ž๋ฉด a { b { c { } } }  ์ด๋Ÿฐ ์‹์œผ๋กœ a์•ˆ์— b๊ฐ€ ํฌํ•จ๋˜์–ด b์˜ ํ•„๋“œ๊ฐ€ ์ถœ๋ ฅ๋˜๊ณ , ๋˜ b์˜ ํ•„๋“œ์— c๊ฐ€ ํฌํ•จ๋˜์–ด c์˜ ํ•„๋“œ๊ฐ€ ์ถœ๋ ฅ๋˜๊ณ  ๋งŒ์•ฝ์— c์˜ ํ•„๋“œ์— ๋˜๋‹ค์‹œ aํ•„๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด ๋ฌดํ•œ ํ˜ธ์ถœ ํ˜„์ƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ฒฐ๊ตญ์— ์„œ๋ฒ„๊ฐ€ ์ฃฝ์–ด๋ฒ„๋ฆฌ๋Š” ์ƒํ™ฉ์„ ๋งž์ดํ•˜๊ฒŒ ๋œ๋‹ค. ์œ„์™€ ๊ฐ™์ด ๋ฌดํ•œ ์ˆœํ™˜ ๊ตฌ์กฐ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ์„  ๊ฐ์ฒด๋ฅผ JSON..