์ด์ mybatis ํ๋ก์ ํธ๋ฅผ ํ๋ฉฐ ๋๋์ ๊ณผ ์ค๋ JPA ๋ฅผ ๋ฐฐ์ฐ๋ฉฐ ๋๋์ ์ ๋ํด ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค.
๊ทธ๋ฆผ์ฒ๋ผ ์๋ฐ ์ดํ๋ฆฌ์ผ์ด์
์ ์ ํฌ๊ฐ ํ์์ ํ๋ก๊ทธ๋๋ฐ ํ๋ ์๋ฐ ๋ก์ง๋ง ์๋ ๊ตฌ๊ฐ์
๋๋ค. (sql ๋ฌธ์ ์ง์ ์๋ฐ ์ดํ๋ฆฌ์ผ์ด์
์ ์์ฑ X)
์ฆ ์ด๋ง์ sql ๊ตฌ์กฐ๋ฅผ ์๋ฐ ์ดํ๋ฆฌ์ผ์ด์
์ ์์ฑํ์ง ์์๋ ๋ฉ๋๋ค.
์๋์ ์ฌ์ง์ ์ด์ ์ ์ ๊ฐ Spring Data JPA๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ๋ฅผ ์งํํ ์ฌ์ง์ ๋๋ค.
- ์ฌ์ง์์ ์ฒ๋ผ ์ด๋ ธํ ์ด์ ์ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํต์ ํ๊ฒ ๋ฉ๋๋ค.
- Entity ํด๋์ค ํ๊ฐ์ ํ ์ด๋ธ 1๊ฐ๋ก ๋งคํ
- Entity ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ฉด์ ๋ง์ ์ ์ฝ? ์กฐ๊ฑด์ด ์์ต๋๋ค.
- Entity ํด๋์ค์์๋ setter๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค.
- ๊ธฐ๋ณธ ์์ฑ์๋ฅผ
Protected๋ก ๋ง๋ค์ด ์ธ๋ถ์์ ๋ณ๊ฒฝ์ ๋ง๋๋ค. (private์ผ๋ก ํ๋ฉดJPA์์๋ ์ ๊ทผ ๋ชปํจ) ๋ฑ๋ฑ์ด ์์ต๋๋ค.
์ค๋ฌด์์๋ ํ ์ด๋ธ์ด ์์ฒญ ๋ณต์กํ๊ฒ ๋๋ค. ์ด๋ ๊ฒ ๋๋ฉด JPA๋ฅผ ์ฌ์ฉํ ์๋ ์์ง๋ง, ์ง์ ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํด์ผ ๋ ์๋ ์๋ค -> ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ ์ค ์์์ผํจ
์์ ์ฌ์ง์์ Entity ํด๋์ค๋ฅผ ๊ด๋ฆฌํ๋ ์ญํ ์ ํ๋ ํด๋์ค๋ก EntityManger ๋ผ๋ ํด๋์ค๊ฐ ์กด์ฌํฉ๋๋ค. ์ฌ๊ธฐ์ ๋ถํฐ๋ ์์์ฑ ์ปจํ ์คํธ๋ผ๋ ๊ฐ๋ ์ด ๋ฑ์ฅํ๊ฒ ๋๋๋ฐ ์ด ๋ถ๋ถ์ ๊ฐ์ฌ๋๊ป์ ์ค๋ช ์ ์ํด์ฃผ์ จ๋ค..... (์ค์ํ ๋ด์ฉ์ผ ํ ๋ฐ ์ ์ํ์ จ์ง..)
persist() : ์ ์ฅfind() : ์ฐพ๊ธฐremove() : ์ญ์ merge() : ๋ณ๊ฒฝ์ฌํญ (์์์ฑ ์ปจํ ์คํธ ๋ผ๋ ํค์๋๋ ๊น์ํ๋์ ์ธํ๋ฐ ๊ฐ์๋ฅผ ํตํด ํผ์ ๊ณต๋ถํ๋ฉฐ ์์์)
์์์ฑ ์ปจํ ์คํธ ๊ฐ๋ ์ ๋ํด์๋ ๋ค์ ๋ณต์ต ํด๋ด์ผ๊ฒ ๋ค.
์ด์ ์๋ Spring Data Jpa ๋ฅผ ์ฌ์ฉํ๋ฉฐ ํ
์ด๋ธ์ ์์ฑํ ๋๋ @Entity ์ด๋
ธํ
์ด์
๊ณผ ํ
์ด๋ธ๊ฐ์ ์ฐ๊ด๊ด๊ณ๋
@ManyToOne (๋ค๋์ผ) , @OneToOne (์ผ๋์ผ) ์ด๋
ธํ
์ด์
์ ํตํด ํ
์ด๋ธ๊ฐ์ ์ฐ๊ด๊ด๊ณ๋ฅผ ์ ์ํด์คฌ๋๋ผ๋ฉด,
mybatis ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์๋ ์ธ๋ํค๋ฅผ inner join ๋ฑ๊ณผ ๊ฐ์ด ์ง์ ํด์ค์ผ ๋๊ณ @Mapper ์ด๋
ธํ
์ด์
์ ํตํด xml ํ์ผ์ sql ์ฟผ๋ฆฌ๋ฌธ๊ณผ ๋งคํ ํ๊ฒ ๋ฉ๋๋ค.
https://dbjh.tistory.com/77 (JPA๋)
https://perfectacle.github.io/2018/01/14/jpa-entity-manager-factory/ (EntityManger ๊ฐ๋
, ์์์ฑ ์ปจํ
์คํธ)