6๋ถ21์ด ์ง๋ฌธ ์์ต๋๋ค.
์๋
ํ์ธ์. ์ ๋ ๊ฐ์๋ฅผ ๋ฃ๋ค๊ฐ ํด๋น ์ด์๊ฐ ๋๋ฌด ํฅ๋ฏธ๋ก์์ ์ฝ๊ฐ์ ์ถ์ ์ ํด๋ณด์์ต๋๋ค. ๋ต๋ณ์ด๋ผ๊ณ ํ๊ธฐ์ ๋ถ์กฑํจ์ด ์์ง๋ง ๊ฐ๋จํ๊ฒ๋๋ง ๋จ๊ฒจ๋ด
๋๋ค.. com.fasterxml.jackson.databind.ser.std.BeanSerializerBase ํด๋์ค์ #serializeFields : void ๋ฉ์๋๋ฅผ ์ฃผ๋ชฉํ์๋ฉด ๋ฉ๋๋ค. ๋ํ, ๊ธฐ์ตํด์ผ ํ ๊ฒ์ ์ง๋ ฌํ ๋์ ๊ฐ์ฒด๋ jpabook.jpashop.domain.Member$HibernateProxy ์ฆ, "ํ๋ก์ ๊ฐ์ฒด"๋ผ๋ ๊ฒ ์
๋๋ค. ์ด ๊ฐ์ฒด๋ jpabook.jpashop.domain.Member ๊ฐ์ฒด์ ํ๋์ ์ถ๊ฐํ์ฌ ๋ ํ๋ ๊ฐ์ง ํ๋๊ฐ ์์ต๋๋ค. "hibernateLazyInitializer" ์
๋๋ค. #serializeFields ๋ฉ์๋์์ props ๋ณ์๊ฐ ์ง๋ ฌํํ ํ๋๋ชฉ๋ก ๋ฐฐ์ด์ ๋ํ๋
๋๋ค. ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. props[0] : property 'id' props[1] : property 'name' props[2] : property 'address' props[3] : property 'orders' props[4] : property 'hibernateLazyInitializer' * orders์ @JsonIgnore๊ฐ ๋ถ์ด์์ผ๋ฉด props๋ orders๋ฅผ ์ ์ธํ ๋ฐฐ์ด. ๋ค์๊ณผ ๊ฐ์ต๋๋ค. props[0] : property 'id' props[1] : property 'name' props[2] : property 'address' props[3] : property 'hibernateLazyInitializer' ๋ค์์ผ๋ก ์ฃผ๋ชฉํด์ผ ํ ๊ฒ์ #serializeFields ๋ฉ์๋์์์ ์์ธ์ฒ๋ฆฌ ๋ถ๋ถ์
๋๋ค. ๋ค์๊ณผ ๊ฐ์ต๋๋ค. try { ........ for (final int len = props.length; i ........ if (prop != null) { prop.serializeAsField(bean, gen, provider); } } ........ } catch (Exception e) { ...์๋ต... } catch (StackOverflowError e) { ...์๋ต... } ๋ฐ๋ผ์ @JsonIgnore๊ฐ ์์ ๋๋ props[3]๊ฐ์ธ 'orders'๋ฅผ ์์
ํ ๋ ์๋ฐฉํฅ๊ด๊ณ์ ์ํ ์ํ์ฐธ์กฐ๋ก ์ธํด ๋ฌดํ์ฌ๊ท๊ฐ ๋์ํ๋ฉด์ Error๊ฐ ๋ฐ์ํ์ฌ catch (StackOverflowError e) ์ด์ชฝ์ผ๋ก ๋น ์ง๊ฒ ๋ฉ๋๋ค. ๊ฐ์์์ ์ฒซ๋ฒ์งธ ์ด์ ์ผ์ด์ค์ ํด๋นํฉ๋๋ค. ๋ง์ผ @JsonIgnore๊ฐ ์์ ๋๋ props[3]๊ฐ์ธ 'hibernateLazyInitializer'๋ฅผ ์์
ํ ๋ No serializer found Exception์ด ๋ฐ์ํ์ฌ catch (Exception e) ์ด์ชฝ์ผ๋ก ๋น ์ง๊ฒ ๋ฉ๋๋ค. ๊ฐ์์์ ๋๋ฒ์งธ ์ด์ ์ผ์ด์ค์ ํด๋นํฉ๋๋ค. * ์ฒซ๋ฒ์งธ ์ด์ ์ผ์ด์ค์์ ์๋ต์ด ๋ ๊ฒ์ StackOverflowError ๊ฐ ๋ฐ์ํ๋ฉด์ response์ ๋ด์๋จ๋ ๊ฒ์ ๊ฐ์ flushํ๊ณ ๋ป์ด๋ฒ๋ ค์ ๊ทธ๋ฐ ๋ฏ ํฉ๋๋ค. * @JsonIgnore๊ฐ ์์ ๋ ๋๋ฒ๊ทธ ๋ชจ๋๋ก props[3]๊ฐ์ธ 'orders'๋ฅผ ์์
ํ ์์ ๋ prop = null๋ก ๋ฐ๊ฟ์น๊ธฐ ํ ๋นํ์ฌ props[4]์ธ 'hibernateLazyInitializer'๋ฅผ ์์
ํ๊ฒ ํด๋ณด์๋๋ No serializer found Exception ๋๊ฐ์ด ๋ฐ์ํ์์ต๋๋ค. ์ ์ตํ ๊ฐ์ ํญ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. JPA์ ๋ฌธ๊ฐ๋ก ๊ฑฐ๋ญ๋๊ธฐ ์ํด ์ ๋ง ์ด์ฌํ ํ๊ฒ ์ต๋๋ค!!