JPA๋ ๋ค์ํ ์ฟผ๋ฆฌ ๋ฐฉ๋ฒ์ ์ง์ํ๋ค
- JPQL (๊ฑฐ์ ๋๋ถ๋ถ JPQL๋ก ํด๊ฒฐ)
- QueryDSL
- ๋ค์ดํฐ๋ธ SQL
- JDBC API ์ง์ ์ฌ์ฉ, MyBatis, SpringJdbcTemplate ๊ณผ ํจ๊ป ์ฌ์ฉ
JPQL์ด๋? : ๊ฐ์ฒด์งํฅ SQL
- JPA๋ SQL์ ์ถ์ํํ JPQL์ด๋ผ๋ ๊ฐ์ฒด ์งํฅ ์ฟผ๋ฆฌ ์ธ์ด(ํ ์ด๋ธ์ด ์๋ ๊ฐ์ฒด๋ฅผ ๋์์ผ๋ก ๊ฒ์)๋ฅผ ์ ๊ณต
- SQL๊ณผ ๋ฌธ๋ฒ ์ ์ฌ, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN ์ง์
- SQL์ ์ถ์ํํด์ ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค SQL์ ์์กดX
- JPQL์ ๊ฒฐ๊ตญ SQL๋ก ๋ณํ๋๋ค
ํ๋ก์ ์ (SELECT)
- SELECT m FROM Member m : ์ํฐํฐ ํ๋ก์ ์
- ๊ฒฐ๊ณผ๋ก ๋์จ ์ฌ๋ฌ๊ฐ์ ์ํฐํฐ๊ฐ ์ ๋ถ ์์์ฑ ์ปจํ ์คํธ์์ ๊ด๋ฆฌ๊ฐ ๋๋ค
- ์๋ ์ฝ๋๋ฅผ ๋ณด๋ฉด update๋ฌธ์ด ๋์ํ ๊ฒ์ ํ์ธํ ์ ์์
- SELECT m.team FROM Member m : ์ํฐํฐ ํ๋ก์ ์
- SELECT m.address FROM Member m : ์๋ฒ ๋๋ ํ์ ํ๋ก์ ์
- SELECT m.username, m.age FROM Member m : ์ค์นผ๋ผ ํ์ ํ๋ก์ ์
- DISTINCT๋ก ์ค๋ณต ์ ๊ฑฐ ๊ฐ๋ฅ
ํ๋ก์ ์ - ์ฌ๋ฌ ๊ฐ ์กฐํ
SELECT m.username, m.age FROM Member m
- Query ํ์ ์ผ๋ก ์กฐํ
- Object[] ํ์ ์ผ๋ก ์กฐํ
- new ๋ช ๋ น์ด๋ก ์กฐํ (์ ์ผ ๊น๋ํ ๋ฐฉ๋ฒ)
SELECT new jpabook.jpql.UserDto(m.username, m.age) FROM Member m
- ํจํค์ง ๋ช ์ ํฌํจํ ์ ์ฒด ํด๋์ค ๋ช ์ ๋ ฅ
- ์์์ ํ์ ์ด ์ผ์นํ๋ ์์ฑ์ ํ์
JPA ์๋ธ ์ฟผ๋ฆฌ ํ๊ณ
- JAP๋ WHERE, HAVING ์ ์์๋ง ์๋ธ ์ฟผ๋ฆฌ ์ฌ์ฉ ๊ฐ๋ฅ
- SELECT ์ ๋ ๊ฐ๋ฅ(ํ์ด๋ฒ๋ค์ดํธ์์ ์ง์)
- FROM ์ ์ ์๋ธ์ฟผ๋ฆฌ๋ ํ์ฌ JPQL์์ ๋ถ๊ฐ๋ฅ
- ์กฐ์ธ์ผ๋ก ํ ์ ์์ผ๋ฉด ํ์ด์ ํด๊ฒฐ
'๐ORM:JPA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ณ๊ฒฝ ๊ฐ์ง์ ๋ณํฉ (0) | 2023.07.18 |
---|---|
@Transactional (0) | 2023.07.15 |
@JoinColumn (0) | 2023.07.13 |
๊ฐ ํ์ , ๊ฐ ํ์ ์ปฌ๋์ (0) | 2023.07.10 |
์ฆ์ ๋ก๋ฉ๊ณผ ์ง์ฐ ๋ก๋ฉ (0) | 2023.07.06 |