๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ193

[JPA] ๊ฐ์ฒด์ง€ํ–ฅ ์ฟผ๋ฆฌ ์–ธ์–ด - ์ค‘๊ธ‰ ๋ฌธ๋ฒ•(2) JPQL - ํŽ˜์น˜ ์กฐ์ธ(fetch join) ์‹ค๋ฌด์—์„œ ์ •๋ง์ •๋ง ์ค‘์š”ํ•จ ํŽ˜์น˜ ์กฐ์ธ(fetch join) SQL ์กฐ์ธ ์ข…๋ฅ˜X JPQL์—์„œ ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ ์—ฐ๊ด€๋œ ์—”ํ‹ฐํ‹ฐ๋‚˜ ์ปฌ๋ ‰์…˜์„ SQL ํ•œ ๋ฒˆ์— ํ•จ๊ป˜ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ join fetch ๋ช…๋ น์–ด ์‚ฌ์šฉ ํŽ˜์น˜ ์กฐ์ธ ::= [ LEFT [OUTER] | INNER ] JOIN FETCH ์กฐ์ธ๊ฒฝ๋กœ ์—”ํ‹ฐํ‹ฐ ํŽ˜์น˜ ์กฐ์ธ ํšŒ์›์„ ์กฐํšŒํ•˜๋ฉด์„œ ์—ฐ๊ด€๋œ ํŒ€๋„ ํ•จ๊ป˜ ์กฐํšŒ(SQL ํ•œ ๋ฒˆ์—) SQL์„ ๋ณด๋ฉด ํšŒ์› ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŒ€(T.*)๋„ ํ•จ๊ป˜ SELECT [JPQL] select m from Member m join fetch m.team select์ ˆ์— m๋งŒ ๋ช…์‹œํ•จ join fetch ๊ตฌ๋ฌธ ์‚ฌ์šฉ [SQL] SELECT M.*, T.* FROM MEMBER M INNER.. 2023. 11. 27.
[JPA] ๊ฐ์ฒด์ง€ํ–ฅ ์ฟผ๋ฆฌ ์–ธ์–ด - ์ค‘๊ธ‰ ๋ฌธ๋ฒ•(1) ๊ฒฝ๋กœ ํ‘œํ˜„์‹ .(์ )์„ ์ฐ์–ด ๊ฐ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ select m.username -> ์ƒํƒœ ํ•„๋“œ from Member m join m.team t -> ๋‹จ์ผ ๊ฐ’ ์—ฐ๊ด€ ํ•„๋“œ join m.orders o -> ์ปฌ๋ ‰์…˜ ๊ฐ’ ์—ฐ๊ด€ ํ•„๋“œ where t.name = 'ํŒ€A' ๋‚ด๋ถ€์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹ ๊ตฌ๋ถ„ ์ƒํƒœํ•„๋“œ ๋‹จ์ผ ๊ฐ’ ์—ฐ๊ด€ํ•„๋“œ ์ปฌ๋ ‰์…˜ ๊ฐ’ ์—ฐ๊ด€ํ•„๋“œ ๊ฒฝ๋กœ ํ‘œํ˜„์‹ ์šฉ์–ด ์ •๋ฆฌ ๋ฐ ์„ค๋ช… ์ƒํƒœ ํ•„๋“œ(state field) ๋‹จ์ˆœํžˆ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ํ•„๋“œ (ex: m.username) ๊ฒฝ๋กœ ํƒ์ƒ‰์˜ ๋, ํƒ์ƒ‰X #๋‹จ์ผ ๊ฐ’ ์—ฐ๊ด€ ๊ฒฝ๋กœ ํƒ์ƒ‰ [JPQL] select o.member from Order o; [SQL] select m.* from Orders o inner join Member m on o.member_id .. 2023. 11. 26.
[JPA] ๊ฐ์ฒด์ง€ํ–ฅ ์ฟผ๋ฆฌ ์–ธ์–ด - ๊ธฐ๋ณธ๋ฌธ๋ฒ• (2) ์กฐ์ธ ๋‚ด๋ถ€ ์กฐ์ธ SELECT m FROM Member m [INNER] JOIN m.team t ์™ธ๋ถ€ ์กฐ์ธ SELECT m FROM Member m LEFT [OUTER] JOIN m.team t ์„ธํƒ€ ์กฐ์ธ SELECT count(m) FROM Member m, Team t WHERE m.username = t.name ON ์ ˆ ON์ ˆ์„ ํ™œ์šฉํ•œ ์กฐ์ธ(JPA 2.1๋ถ€ํ„ฐ ์ง€์›) 1. ์กฐ์ธ ๋Œ€์ƒ ํ•„ํ„ฐ๋ง 2. ์—ฐ๊ด€๊ด€๊ณ„ ์—†๋Š” ์—”ํ‹ฐํ‹ฐ ์™ธ๋ถ€ ์กฐ์ธ(ํ•˜์ด๋ฒ„๋„ค์ดํŠธ 5.1๋ถ€ํ„ฐ) ์กฐ์ธ ๋Œ€์ƒ ํ•„ํ„ฐ๋ง ์˜ˆ) ํšŒ์›๊ณผ ํŒ€์„ ์กฐ์ธํ•˜๋ฉด์„œ, ํŒ€ ์ด๋ฆ„์ด A์ธ ํŒ€๋งŒ ์กฐ์ธ [JPQL] SELECT m, t FROM Member m LEFT JOIN m.team t on t.name = 'A' [SQL] SELECT m.*, t.* FROM Me.. 2023. 11. 26.
[ch.5] ์†ŒํŠธ ํŠœ๋‹ ์นœ์ ˆํ•œ SQLํŠœ๋‹ ๊ณต๋ถ€ ์ •๋ฆฌ ๋…ธ์…˜๋งํฌ https://ginger-edam-26b.notion.site/SQL_CH_5_-_-98961bb937cc4bb8ab8cef70195814aa?pvs=4 SQL_CH_5_์†ŒํŠธ_ํŠœ๋‹ [ ์˜ค๋Š˜ ์ˆ˜์—… ํ•ต์‹ฌ ] ginger-edam-26b.notion.site [๋ฏธ๋ฆฌ๋ณด๊ธฐ] 2023. 11. 26.
[ch.4] ์กฐ์ธ ํŠœ๋‹ ์นœ์ ˆํ•œ SQLํŠœ๋‹ ๊ณต๋ถ€ ์ •๋ฆฌ ๋…ธ์…˜๋งํฌ https://ginger-edam-26b.notion.site/SQL_CH_4_-_-f4b956332f34427e9042b788d273a194?pvs=4 SQL_CH_4_์กฐ์ธ_ํŠœ๋‹ [ ์˜ค๋Š˜ ์ˆ˜์—… ํ•ต์‹ฌ ] ginger-edam-26b.notion.site [๋ฏธ๋ฆฌ๋ณด๊ธฐ] 2023. 11. 26.
[ch.3] INDEX ํŠœ๋‹ ์นœ์ ˆํ•œ SQLํŠœ๋‹ ๊ณต๋ถ€ ์ •๋ฆฌ ๋…ธ์…˜๋งํฌ https://ginger-edam-26b.notion.site/SQL_CH_3_INDEX_-68c56ad245b0422b8fe5b5a6145c3885?pvs=4 SQL_CH_3_INDEX_ํŠœ๋‹ [ CH.3 ์ธ๋ฑ์Šค ํŠœ๋‹ ] ginger-edam-26b.notion.site [๋ฏธ๋ฆฌ๋ณด๊ธฐ] 2023. 11. 26.
[ch.2] ์ธ๋ฑ์Šค ๊ธฐ๋ณธ ์นœ์ ˆํ•œ SQLํŠœ๋‹ ๊ณต๋ถ€ ์ •๋ฆฌ ๋…ธ์…˜๋งํฌ https://ginger-edam-26b.notion.site/SQL_CH_2_-_-0b68ac7defd948889b84ad47fc8eafbb?pvs=4 SQL_CH_2_์ธ๋ฑ์Šค_๊ธฐ๋ณธ [ ์˜ค๋Š˜ ์ˆ˜์—… ํ•ต์‹ฌ ] ginger-edam-26b.notion.site [๋ฏธ๋ฆฌ๋ณด๊ธฐ] 2023. 11. 26.