JPQL part3
๋คํ์ฑ ์ฟผ๋ฆฌ
JPQL๋ก ๋ถ๋ชจ ์ํฐํฐ๋ฅผ ์กฐํํ๋ฉด ์์ ์ํฐํฐ๋ ํจ๊ฒ ์กฐํํ๊ฒ ๋๋ค
๋ค์ํ ํ์ ์ด ์กด์ฌํ๊ณ ํฌ๊ฒ๋ก๋ TYPE - ์ํฐํฐ์ ์์ ์์กฐ์์ ์กฐํ ๋์์ ํน์ ์์ ํ์ ์ผ๋ก ํ์ ํ ๋ ์ฃผ๋ก ์ฌ์ฉ TREAT - ์์ ๊ตฌ์กฐ์์ ๋ถ๋ชจ ํ์ ์ ํน์ ์์ ํ์ ์ผ๋ก ๋ค๋ฃฐ ๋ ์ฌ์ฉ
์ฌ์ฉ์ ์ ์ ํจ์ ํธ์ถ
๋ฌธ๋ฒ
ํ์ด๋ฒ๋ค์ดํธ ๊ตฌํ์ฒด๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ฐฉ์ธ ํด๋์ค๋ฅผ ์์ํด์ ๊ตฌํํ๊ณ ์ฌ์ฉํ ํจ์๋ฅผ ๋ฏธ๋ฆฌ ๋ฑ๋กํด์ผํจ
๊ธฐํ ์ ๋ฆฌ
enum์ = ๋น๊ต์ฐ์ฐ๋ง ์ง์ ์๋ฒ ๋๋ ํ์ ์ ๋น๊ต๋ฅผ ์ง์ํ์ง ์์
Empty String
JPAํ์ค์์๋ ''์ ๊ธธ์ด 0์ธ Empty String์ผ๋ก ์ง์ ํด๋์์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ง๋ค ''์ null๋ก ๊ฐ์ฃผํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์กด์ฌ
Null ์ ์
์กฐ๊ฑด์ ๋ง์กฑํ๋ ๋ฐ์ดํฐ๊ฐ ํ๋๋ ์์ผ๋ฉด null null๊ฐ์ ์๋ฏธ๋ unknownvalue์ด๋ค -> ๋ฐ๋ผ์ null๊ณผ ์ด๋ฃจ์ด์ง๋ ๋ชจ๋ ์ํ์ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ null null == null ์ ์ ์ ์๋ ๊ฐ์ด๋ค null IS NULL ์ true์ด๋ค
์ํฐํฐ ์ง์ ์ฌ์ฉ
๊ธฐ๋ณธ ํค ๊ฐ
๊ฐ์ฒด ์ธ์คํด์ค๋ ์ฐธ์กฐ ๊ฐ์ผ๋ก ์๋ณํ๊ณ ํ ์ด๋ธ ๋ก์ฐ๋ ๊ธฐ๋ณธ ํค๊ฐ์ผ๋ก ์๋ณํ๋ค ๋ฐ๋ผ์ JPQL์์ ์ํฐํฐ ๊ฐ์ฒด๋ฅผ ์ง์ ์ฌ์ฉํ๋ฉด SQL์์๋ ํด๋น ์ํฐํฐ์ ๊ธฐ๋ณธ ํค ๊ฐ์ ์ฌ์ฉ
์ฒซ ๋ฒ์งธ ์ค์ m.id๋ฅผ ๊ธฐ์ค(๊ธฐ๋ณธํค)์ผ๋ก ๊ฒ์ํ๋๊ฑฐ์ง๋ง ๋ ๋ฒ์จฐ ์ค์ m๋ฅผ ๊ธฐ์ค(์ํฐํฐ)์ผ๋ก ๊ฒ์ํ๋ ๊ฑด๋ฐ, ์ฌ์ค ์ค์ ๋ก sql๋ฌธ์ด ์คํ๋ ๊ฒ์ ํ์ธํด๋ณด๋ฉด ๋ ๋ค ๋ชจ๋ ์ํฐํฐ์ ๊ธฐ๋ณธ ํค๋ฅผ ์ฌ์ฉํ ๊ฒ์ผ๋ก ํ์ธํ ์ ์๋ค
์ฌ์ฉํ๋ ๊ฒ์ ์ฝ๋๋ก ๋ณด๋ฉด ์ํฐํฐ๋ฅผ ์ง์ ์ฌ์ฉํ๋ ์ฝ๋
์๋ณ์๋ฅผ ์ฌ์ฉํ๋ ์ฝ๋
์ด ๋์ ๊ฒฐ๊ณผ๋ ๊ฐ๊ฒ ์๋ํ๋ค๋ ๊ฑฐ..!
์ธ๋ ํค ๊ฐ
์ด๋ฒ์ ์ธ๋ ํค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ด๋ณด์ ์ผ๋จ ๊ทธ๋ฅ ๋จ์ํ๊ฒ ์ํฐํฐ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ์ด ๋ณด์
์ด๋ฒ์ ์ธ๋ ํค๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
m.team.id๋ผ๋ ์๋ฏธ๋ team๊ณผ member๊ฐ ์กฐ์ธ์ด ์ผ์ด๋์๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ง ์ฌ์ค ์ด๋ฏธ member ํ ์ด๋ธ์ team_id๋ฅผ ์ธ๋ํค ๋ก ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ์กฐ์ธ์ด ์ผ์ด๋์ง๋ ์๋๋ค. ๋ฌผ๋ก m.team.name๋ง ์ด๋ ๊ฒ ๊ฐ์ง๊ณ ์์ง ์์ ๊ฐ์ ์กฐํํ๋ค๋ฉด ์กฐ์ธ์ ์ผ์ด๋๋ค ๊ทธ๋์ ๊ฒฐ๋ก ์ ์ผ๋ก m.team.id๋ฅผ ์ฌ์ฉํด๋ ์กฐ์ธ์ ์ผ์ด๋์ง ์๋๋ค๋์
Named ์ฟผ๋ฆฌ
JPQL ์ฟผ๋ฆฌ๋ ํฌ๊ฒ ๋์ ์ฟผ๋ฆฌ, ์ ์ ์ฟผ๋ฆฌ๋ก ๋๋ ์ ์๋ค
๋์ ์ฟผ๋ฆฌ : em.createQuery์ฒ๋ผ jpql์ ๋ฌธ์์ด๋ก ๋ง๋ค์ด์ ์ ์กํ๋ ๊ฒ์ ์๋ฏธ
์ ์ ์ฟผ๋ฆฌ : ๋ฏธ๋ฆฌ ์ ์ํ ์ฟผ๋ฆฌ์ ์ด๋ฆ์ ๋ถ์ฌํด์ ํ์ํ ๋ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด๊ณ ํ ๋ฒ ์ ์ํ๋ฉด ๋ค์ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ
Named ์ฟผ๋ฆฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก๋ฉ ์์ ์ jpql์ ์ฒดํฌํ๊ณ ๋ฏธ๋ฆฌ ํ์ฑํด๋๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๋ฅผ ๋น ๋ฅด๊ฒ ์ฒดํฌํ ์ ์์ผ๋ฉฐ ๋ฏธ๋ฆฌ ํ์ฑํด๋ ๊ฒ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ๋ ๋น ๋ฅด๋ฉฐ ์ ์ sql์ด ์์ฑ๋จ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์กฐํ ์ฑ๋ฅ ์ต์ ํ๋ ์ ๋๋ค ๊ทธ๋์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ๋ญ๋ -> ์ ๋ ธํ ์ด์ ์ผ๋ก ์ ์
์ฝ๋๋ก ๋ณด์
์ด๋ ๊ฒ ์ ์ธํด๋๊ณ ์ค์ ์ฌ์ฉ์
๋ง์ฝ์ ๋ ๊ฐ ์ด์์ namedquery๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด @NamedQueries({@NamedQuery, ... }) ์ด๋ ๊ฒ ๋ด๋ถ์ ์ง์ด๋ฃ๊ณ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฅ
Last updated
Was this helpful?