JPA
JPA(Java Persistence API) Jdbc Template์ ์ด์ฉํด๋ SQL ์ฟผ๋ฆฌ๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ์ง์ ์์ฑํด์ผํ์ง๋ง, JPA๋ฅผ ์ฌ์ฉํ๋ฉด SQL์ฟผ๋ฆฌ๋ JPA๊ฐ ์๋์ผ๋ก ์ฒ๋ฆฌํด์ค๋ค! ์ด๋ก์จ ๊ฐ๋ฐ์์ฐ์ฑ์ ํฌ๊ฒ ๋์ผ ์ ์๋ค!
๋จ์ํ SQL๋ฌธ์ ์์ฑํด์ฃผ๋ ๊ฒ์ ๋์ด SQL๊ณผ ๋ฐ์ดํฐ ์ค์ฌ์ด์ด ์๋๋ผ ๊ฐ์ฒด ์ค์ฌ(๊ฐ์ฒด ์ค์ฌ์ ์ค๊ณ)์ผ๋ก ์๊ฐํ ์ ์๊ธฐ ๋๋ฌธ์ ํจ๋ฌ๋ค์์ ์ ํํ ์ ์๋ค!
์คํ๋ง์ ์์ฒญ๋๊ฒ ํฐ ๊ธฐ์ ์ด๊ณ , JPA๋ ์คํ๋ง๋งํผ ๋์ด์ ๊น์ด๊ฐ ์๋ค. ์ค์ ๋ก ์คํ๋ง ํ๋ ์์ํฌ์์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ จ๋ ์์ ๋ค์ JPA๊ฐ ๊ธฐ๋ณธ์ผ๋ก ๊น๊ณ ๋ค์ด๊ฐ์๋ค.
JPA๋ Java ์ง์์ ํ์ค ์ธํฐํ์ด์ค์ด๊ณ , ๊ตฌํ์ hibernate๋ eclipse ๊ฐ์ ์ฌ๋ฌ ์ ์ฒด๋ค์ด ํ๋ค. ORM(Object Relational Mapping) : ๊ฐ์ฒด์ ๊ด๊ณํ DB๋ฅผ ๋งตํํ๋ค๋ ๋ป์ด๋ค! DB์์ ๋งตํ์ ์ด๋ ธํ ์ด์ ์ผ๋ก ํ ์ ์๋ค!
JPA ์ฌ์ฉ๋ฐฉ๋ฒ 1. application.properties : ์๋์ฒ๋ผ ์ถ๊ฐํด์ค๋ค! JPA๋ ํ์ ๊ฐ์ฒด๋ฅผ ๋ณด๊ณ ์๋์ผ๋ก ํ ์ด๋ธ์ ์์ฑํ๋ค. ํ์ฌ ํ ์ด๋ธ์ด ๋ง๋ค์ด์ ธ์๊ณ , ์ด๊ฒ์ ์ฌ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํ ์ด๋ธ ์๋ ์์ฑ ๊ธฐ๋ฅ์ 'none'์ผ๋ก ํด์ค๋ค.
2. build.gradle : jpa๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ฑ => 1์์ ์ ํ ํ ์ ๋ณด์ DB ์ปค๋ฅ์ ์ ๋ณด๋ฅผ ํฉํด์ ์คํ๋ง๋ถํธ๊ฐ ์๋์ผ๋ก EntityManager์์ฑํด์ค๋ค! JPA๋ฅผ ์ฐ๋ ค๋ฉด EntityManager๋ฅผ ์ฃผ์ ๋ฐ์์ผํ๋ค. JPA๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ EntityManager๊ฐ ์์ด์ผํ๋ค!
JPA ์ฌ์ฉํ ๋ ์ฃผ์ํ ์
ํญ์ @Transactional์ด ์์ด์ผํ๋ค! MemberService ํด๋์ค์์ ํด๋์ค ์์์ ์ ์ถ๊ฐํด์ค๋ค!
JpaMemberRepository.java ํน์ง : PK(Primary Key)์ธ Id๊ฐ์ ๊ฐ์ ธ์ฌ ๋๋ ์๊ด์์ง๋ง, PK๊ฐ ์๋ ๋ฐ์ดํฐ์ ๋ํด์๋ JPQL์ ์ฌ์ฉํ๋ค. ์ด JPQL์ ํ ์ด๋ธ์ ๋์์ผ๋ก ํ๋ ์ฟผ๋ฆฌ๊ฐ ์๋๋ผ ๊ฐ์ฒด(Member Entity)๋ฅผ ๋์์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ๋ง๋ ๋ค!
์๋ฅผ ๋ค์ด findAll()๋ฉ์๋๋ฅผ ๊ตฌํํ ๋ select๋ฌธ์ผ๋ก ์์ฑํ๋ฉด select m.id(m.name)์ผ๋ก ํ์ง๋ง ์๋์ฒ๋ผ select m์ผ๋ก Member ์ํฐํฐ ๊ทธ ์์ฒด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค. ๊ฐ์ ธ์ค๋ ํ์ ์ Member.class
Last updated