Spring-study๐ฑ/SpringBoot-JPA53 Section 10-4. ์ปฌ๋ ์  ํ์น ์กฐ์ธ ํ๊ณ ๋ํ ์์ฅ์์ ํ์ธํ๋ฏ์ด ์ปฌ๋ ์ ์ ํ์น ์กฐ์ธ ์ ๋ฐ์ํ๋ ๋ฌธ์ ์ ์ ํ๋ฒ ๋ ์ ๋ฆฌํด๋ณด์. ์ปฌ๋ ์ ์ ํ์น ์กฐ์ธํ๋ฉด ํ์ด์ง์ด ๋ถ๊ฐ๋ฅํ๋ค. ์ปฌ๋ ์ ์ ํ์น ์กฐ์ธํ๋ฉด ์ผ๋๋ค ์กฐ์ธ์ด ๋ฐ์ํ๋ฏ๋ก ๋ฐ์ดํฐ๊ฐ ์์ธกํ ์ ์์ด ์ฆ๊ฐํ๋ค. ์ผ๋ค๋์์ ์ผ(1)์ ๊ธฐ์ค์ผ๋ก ํ์ด์ง์ ํ๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ค. ๊ทธ๋ฐ๋ฐ ๋ฐ์ดํฐ๋ ๋ค(N)๋ฅผ ๊ธฐ์ค์ผ๋ก row๊ฐ ์์ฑ๋๋ค. Order๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ด์ง ํ๊ณ ์ถ์๋ฐ, ๋ค(N)์ธ OrderItem์ ์กฐ์ธํ๋ฉด OrderItem์ด ๊ธฐ์ค์ด ๋์ด๋ฒ๋ฆฐ๋ค. ์ด ๊ฒฝ์ฐ ํ์ด๋ฒ๋ค์ดํธ๋ ๊ฒฝ๊ณ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๊ณ ๋ชจ๋ DB ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ ๋ฉ๋ชจ๋ฆฌ์์ ํ์ด์ง์ ์๋ํ๋ค. ์ต์ ์ ๊ฒฝ์ฐ ์ฅ์ ๋ก ์ด์ด์ง ์ ์๋ค. ๊ทธ๋ผ ์ด ์ปฌ๋ ์  ํ์น ์กฐ์ธ ์ ํ๊ณ๋ฅผ ์ด๋ป๊ฒ ๊ทน๋ณตํ ์ ์์๊น??? ์ง๊ธ๋ถํฐ ์ฝ๋๋ ๋จ์ํ๊ณ , ์ฑ๋ฅ ์ต์ ํ๋ ๋ณด์ฅํ๋ ๋งค์ฐ ๊ฐ.. 2023. 1. 15. Section 10-3. ์ฃผ๋ฌธ ์กฐํ V3: ์ํฐํฐ๋ฅผ DTO๋ก ๋ณํ - ํ์น ์กฐ์ธ ์ต์ ํ ์์ V2์ ๋ฐฉ๋ฒ์์๋ ์ง๋์น๊ฒ ๋ง์ SQL์ด ๋ฐ์๋๋ ๊ฒ์ ๋ณผ ์ ์์๋ค. ์ด์ ํ์น ์กฐ์ธ์ ์ ์ฉ์์ผ๋ณด๊ณ ์ ํ๋ค. ์ด๋ฅผ ์คํ์์ผ ๋ณด๋ฉด???!! ๋๊ฐ์ ์ฃผ๋ฌธ์ด ํ๋ ๋ ์๊ธด๊ฒ์ ๋ณผ ์ ์๋ค. ํ์น ์กฐ์ธ์ ํ ์ฟผ๋ฆฌ๋ฌธ์ ์๋์ ๊ฐ๋ค. select order0_.order_id as order_id1_6_0_, member1_.member_id as member_i1_4_1_, delivery2_.delivery_id as delivery1_2_2_, orderitems3_.order_item_id as order_it1_5_3_, item4_.item_id as item_id2_3_4_, order0_.delivery_id as delivery4_6_0_, order0_.member_id as member_.. 2023. 1. 15. Section 10-2. ์ฃผ๋ฌธ ์กฐํ V2: ์ํฐํฐ๋ฅผ DTO๋ก ๋ณํ ์ํฐํฐ๋ฅผ ์ง์  ๋ ธ์ถํ๋ ๊ฒ์ด ์ข์ง ์์ผ๋ DTO๋ก ๋ณํํ API๋ฅผ ์์ฑํด๋ณด์. ๋ด๋ถ ํด๋์ค๋ก OrderDto๋ฅผ ๋ง๋ค์ด ์ค๋ค DTO๋ก ์กฐํํ๋ V2 ๋ฒ์ ์ API๋ฅผ ์์ฑํด๋ณด์๋ค. ์ด๋ฅผ ์คํํ๊ฒ ๋๋ฉด ์๋์ ๊ฐ์ด ์กฐํ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ๋ค๋ฅธ๊ฑด ๋ค ์กฐํ๊ฐ ๋์๋๋ฐ orderItems๊ฐ null์ธ ๊ฒ์ ๋ณผ ์ ์๋ค. ์ด์ ๋ orderItems๋ LAZY ํ์ ์ ์ํฐํฐ์ด๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ์ด๊ธฐํ๋ฅผ ํด์ฃผ์ด์ผ ๋ด๋ถ ์ ๋ณด๋ฅผ ์กฐํํ ์ ์๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์, ์๋์ ๊ฐ์ด ๋ณ๋์ ์ด๊ธฐํ๋ฅผ ํด์ค๋ค. ๊ทธ๋ฌ๋ฉด ์๋์ ๊ฐ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์กฐํ๊ฐ ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ๊ทธ๋ผ ๋ฌธ์  ์์ด ๋ค ํด๊ฒฐ๋์๋ค๊ณ ๋ณผ ์ ์์๊น? ์ ๋ ๊ทธ๋ ์ง ์๋ค. DTO๋ฅผ ๋ฐํํ๋ค๊ณ ํ ๋ ์ํฐํฐ๊ฐ ์ง์  ๋ ธ์ถ๋๋ฉด ์๋๋ค. ์ง๊ธ orderItems๋ฅผ ๋ณด.. 2023. 1. 15. Section 10-1. ์ฃผ๋ฌธ ์กฐํ V1: ์ํฐํฐ ์ง์  ๋ ธ์ถ ์์ ์์ ์์๋ xToOne(OneToOne, ManyToOne) ๊ด๊ณ๋ง ์์๋ค. ์ด๋ฒ์๋ ์ปฌ๋ ์ ์ธ ์ผ๋๋ค ๊ด๊ณ(OneToMany)๋ฅผ ์กฐํํ๊ณ , ์ต์ ํํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ณ ์ ํ๋ค. ์ปฌ๋ ์  ์กฐํ๋ ์ผ๋๋ค ์กฐํ๋ฅผ ๋งํ๋๋ฐ DB์ ์ฅ์์ ์ผ๋๋ค ์กฐํ๋ฅผ ํ๊ฒ ๋๋ฉด ๋ฐ์ดํฐ๊ฐ ์ผ๋ช ๋ปฅํ๊ธฐ ํ์์ด ๋ฐ์ํ๊ฒ ๋๋ค. ๊ทธ๋์ ์ต์ ํ๋ฅผ ํ๋ ๊ฒ์ด ์ด๋ ต๋ค๊ณ ๋ณผ ์ ์๋ค. ์ด์ ์ ๋ฐฐ์ด ๋ค๋์ผ ๊ด๊ณ์์๋ ํ์น ์กฐ์ธ ๊ฐ์๊ฑธ๋ก ํ๋ฒ์ ๋ค ๊ธ์ด์ค๋ฉด ์ด๋์ ๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๊ฐ๋ฅํ๋ฐ ์ผ๋๋ค ๊ด๊ณ์ ๊ฒฝ์ฐ๋ ์ด๋ป๊ฒ ํด์ผ๋๋์ง ์์๋ณด์. ์ปฌ๋ ์  ์กฐํ๋ฅผ ํ๊ธฐ์ํด Order ๊ธฐ์ค์ผ๋ก ์ปฌ๋ ์ ์ธ OrderItem๊ณผ Item์ ์ถ๊ฐ๋ก ์กฐํํด๋ณด๊ณ ์ ํ๋ค. ์ง๊ธ์ Order์์ ์ฃผ๋ฌธ์ํ๊ณผ ์ํ์ ์ ๋ณด๋ฅผ ์ป๊ธฐ ์ํด์๋ Order -> OrderItems -> I.. 2023. 1. 15. Section 9-5. ๊ฐ๋จํ ์ฃผ๋ฌธ ์กฐํ V4: JPA์์ DTO๋ก ๋ฐ๋ก ์กฐํ V3์์๋ ์คํธ๋ฆผ์ ์ฌ์ฉํ์ฌ DTO๋ก ๋ณํํ ๊ฒ์ ํตํด ์กฐํ๋ฅผ ํ์๋ค. ์ด๋ฒ์๋ JPA์์ DTO๋ก ๋ฐ๋ก ์กฐํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์. ๋ณ๋์ OrderSimpleQueryDto ํด๋์ค๋ฅผ ๋ง๋ ๋ค ์ผ๋ฐ์ ์ธ SQL์ ์ฌ์ฉํ ๋ ์ฒ๋ผ ์ํ๋ ๊ฐ์ ์ ํํ์ฌ ์กฐํํ๋ ๊ฒ์ฒ๋ผ new ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํด์ค๋ค. V3 ํ์น์กฐ์ธ์ ์ฌ์ฉํ์ ๋์ ๋น๊ตํด๋ณด์์ ๋ select๋ฌธ๋ง ์กฐ๊ธ ๋ค๋ฅธ๊ฒ์ ์ ์ ์๋ค. JPA์์ DTO๋ก ๋ฐ๋ก ์กฐํํจ์ผ๋ก์จ ๋ด๊ฐ ํ์ํ ์ ๋ณด์ ๋ํด์๋ง select ํ ๊ฒ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด v3์ v4๋ฐฉ๋ฒ ์ค ์ด๋ ๊ฒ์ด ๋ ์ข์ ๊ฒ์ผ๊น? ์ฌ์ค ์ด๋๊ฒ์ด ๋ ์ข๋ค๊ณ ํ ์๋ ์๋ค. v4๊ฐ select๋ฌธ์ด ์ค์ด๋ฌ์ผ๋ก์จ ์ฑ๋ฅ์ด ์กฐ๊ธ ๋ ์ต์ ํ๊ฐ ๋๊ธดํ์ง๋ง new ๋ช ๋ น์ด์ ํจ๊ป fitํ๊ฒ ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑ.. 2023. 1. 14. ์ด์  1 2 3 4 5 ยทยทยท 11 ๋ค์