JPA(Java Persistence API)๋ฅผ ์ฌ์ฉํ ๋, JPA์์ ์ ๊ณตํ๋ ์ฟผ๋ฆฌ ๋ฉ์๋ ์ธ SQL ์ฟผ๋ฆฌ๋ฅผ ์ง์ ์ ๋ ฅํ์ฌ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
๋์ ๊ฒฝ์ฐ์๋ ํ ์ด๋ธ์ ์ด๋ค ์กฐ๊ฑด์ ๊ฐฏ์๋ฅผ ๊ตฌํ ๋ Entity์์ @Folmura๋ฅผ ์ฌ์ฉํ์ฌ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ๊ตฌํ์๋๋ฐ,
Entity์์ ์ง์ DB์ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆฌ๋ ๊ฑด ์ฉ๋ ๋ถ๋ฆฌ์ ๋ชฉ์ ์์ ๊ถ๊ณ ํ์ง์๋๋ค๊ณ ํ์ฌ JPA์ native query๋ฅผ ์ด์ฉํ์ฌ ์์ ๊ตฌํํ์๋ค.
NatvieQuery๋ JPQL์ด ์๋ SQL๋ฅผ ์ง์ ์ ์ํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.
function๊ณผ join๋ฅผ ํ๋ ๊ฒฝ์ฐ JPQL๋ฅผ ์ฌ์ฉํ ์๋ ์์ง๋ง SQL๋ฅผ ์ง์ ์ ์ํ ์์๋ NativeQuery๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
๐@Formula๋ฅผ ์ฌ์ฉํ Inner query ์ด์ฉ ๋ฐฉ์
: Formula ์ด๋ ธํ ์ด์ ์ ํตํ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆฌ๋ ๋ฐฉ์
: ์ ๋ฐฉ์์ ๊ฒฝ์ฐ DB์ ๋ณ๋๋ก ์ปฌ๋ผ์ ๋ง๋ค์ง์๊ณ , select ํด์ ๋ฆฌํดํ๋ ํ์
: ์ฉ๋/๋ชฉ์ ๋ถ๋ฆฌ๋ฅผ ์ํด์ Repository์์ JPQL์ ํตํ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ
๐ @Query๋ฅผ ์ฌ์ฉํ Native Query ์ด์ฉ ๋ฐฉ์
: @Query Annotation๋ Entity์ JpaRepository๋ฅผ ์์๋ฐ๋ ์ธํฐํ์ด์ค์ ์ ์ํ๊ฒ ๋๋ค.
: @Query๋ฅผ ์ด์ฉํ์ฌ NativeQuery๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ @Query ์์ฑ์ค nativeQuery์ ๊ฐ์ true๋ก ์ค์ ํ๋ฉฐ value์๋ SQL๋ฌธ์ ์์ฑํ๋ฉด ๋จ
: ๊ธฐ๋ณธ์ ์ธ ์์ฑ๋ฐฉ๋ฒ์ from ๊ตฌ๋ฌธ์ Entity์ ๊ฐ์ฒด๋ฅผ ์ ์ธํ์ฌ ํด๋น ๊ฐ์ฒด์ ์์ฑ๋ช
์ ํตํด์ ์กฐ๊ฑด๊ณผ ํ๋ผ๋ฏธํฐ๋ฅผ ์์ฑํ๋ค.
: ๊ฐ ๋ฌธ์ฅ์ด ๋ฌธ์์ด๋ก ์ด์ด์ ธ์์ด์ ๊ฐ ๋ฌธ์ฅ ๋์ ๋์ด์ฐ๊ธฐ ์ถ๊ฐ๊ฐ ํ์ํ๋ค.
๐ value = " "์์ ์กฐํํ๊ณ ์ถ์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ณ , nativeQuery=true๋ก ์ต์ ์ ์ค์ ํ๋ค.
๐ ๋์ ๊ฒฝ์ฐ Where์ ์ ๋ค์ด๊ฐ๋ id๊ฐ ๊ฐ๋ณ์ ์ด์๊ธฐ ๋๋ฌธ์ ':id'๋ก ๊ฐ์ ์ฃผ์ด์ id๊ฐ์ ์ ๋ ฅ๋ฐ์ ์ผ์นํ๋ ์ฟผ๋ฆฌ์ ๊ฐฏ์๋ฅผ ๊ณ์ฐํ๋๋ก ์ฟผ๋ฆฌ๋ฅผ ์งฐ๋ค.
: ์ฌ์ฉ์์๋ ์ฐ๋ฆฌ๊ฐ findAll์ ์ฌ์ฉํ๋ ๊ฒ ์ฒ๋ผ Repository.๋งค๊ฐ๊ฐ ์ผ๋ก ํธ์ถํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค ! ๐ฅ
'๐ JPA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋์์ฑ ์ ์ด Chap 2 | ๋ถ์ฐ๋ฝ (0) | 2023.01.24 |
---|---|
๋์์ฑ ์ ์ด Chap 1 | ๋น๊ด์ ๋ฝ, ๋๊ด์ ๋ฝ ? (0) | 2023.01.24 |
JPA | ์ฐ๊ด๊ด๊ณ (0) | 2022.12.08 |