์ค์ต์ ํตํด์ ์ค์ Spring Data Jpa๋ฅผ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๊ฒ ๋๋ ์ง ์์๋ณผ ํ์๊ฐ ์๋ค.
Spring Data Jpa๊ฐ ๊ฐ๋ฐ์ ํ์ํ ๊ฒ์ ๋จ์ง ๋ ์ข ๋ฅ์ ์ฝ๋๋ง์ผ๋ก ๊ฐ๋ฅํฉ๋๋ค.
- JPA๋ฅผ ํตํด์ ๊ด๋ฆฌํ๊ฒ ๋๋ ๊ฐ์ฒด(์ดํ ์ํฐํฐ๊ฐ์ฒด)๋ฅผ ์ํ ์ํฐํฐ ํด๋์ค
- ์ํฐํฐ ๊ฐ์ฒด๋ค์ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง Repository
์ด ์ค์์ Repository๋ Spring Data Jpa์์ ์ ๊ณตํ๋ ์ธํฐํ์ด์ค๋ก ์ค๊ณํ๋๋ฐ,
๊ฐ๋ฐ์ ์ ์ฅ์์๋ ๋จ์ํ ์ธํฐํ์ด์ค๋ฅผ ํ๋ ์ ์ํ๋ ์์ ๋ง์ผ๋ก๋ ์ถฉ๋ถํฉ๋๋ค.
์ค์ต์ ์ํด์ ๋จผ์ Java์์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ํฐํฐ ํด๋์ค๋ฅผ ์ ์ํฉ๋๋ค.
2.4.1 ์ํฐํฐ ํด๋์ค ์์ฑ
Memo ํด๋์ค๋ ์ํฐํฐํด๋์ค๋ก ๋ง์น ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ํ ์ด๋ธ๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ฅผ ์์ฑํฉ๋๋ค.
@Entity
์ํฐํฐ ํด๋์ค๋ Spring Data JPA์์๋ ๋ฐ๋์ @Entity๋ผ๋ ์ด๋ ธํ ์ด์ ์ ์ถ๊ฐํด์ผ๋งํฉ๋๋ค.
@Entity๋ ํด๋น ํด๋์ค๊ฐ ์ํฐํฐ๋ฅผ ์ํ ํด๋์ค์ด๋ฉฐ,
ํด๋น ํด๋์ค์ ์ธ์คํด์ค๋ค์ด JPA๋ก ๊ด๋ฆฌ๋๋ ์ํฐํฐ ๊ฐ์ฒด๋ผ๋ ๊ฒ์ ์๋ฏธํ๋ค.
@Table
๋ฐ์ดํฐ๋ฒ ์ด์ค์์์ ์ํฐํฐ ํด๋์ค๋ฅผ ์ด๋ ํ ํ ์ด๋ธ๋ก ์์ฑํ ๊ฒ์ธ์ง์ ๋ํ ์ ๋ณด๋ฅผ๋ด๊ธฐ ์ํ ์ด๋ ธํ ์ด์ ์ ๋๋ค.
@Id์ @GeneratedValue
pk์ ํด๋นํ๋ ํน์ ํ๋๋ฅผ @Id๋ก ์ง์ ํด์ผ๋ง ํฉ๋๋ค.
@Id๊ฐ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ ๊ฐ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ์๋์ผ๋ก ์์ฑ๋๋ ๋ฒํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ @GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)๋ถ๋ถ์
PK๋ฅผ ์๋์ผ๋ก ์์ฑํ๊ณ ์ ํ ๋ ์ฌ์ฉํฉ๋๋ค.
๋ง์ผ ์ฐ๊ฒฐ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ Mysql์ด๋ MariaDB๋ฉด 'auto increment'๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํด์ ์๋ก์ด ๋ ์ฝ๋๊ฐ ๊ธฐ๋ก๋ ๋ ๋ง๋ค ๋ค๋ฅธ ๋ฒํธ๋ฅผ ๊ฐ์ง ์ ์๋๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
@Column
๋ง์ผ ์ถ๊ฐ์ ์ธ ํ๋๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ด๋ ธํ ์ด์ ์ ํ์ฉํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ์ฝ๋ ์์
2.4.2 Spring Data JPA๋ฅผ ์ํ ์คํ๋ง ๋ถํธ ์ค์
์๋์ผ๋ก ํ์ํ ํ ์ด๋ธ์ ์์ฑํ๊ฑฐ๋ JPA๋ฅผ ์ด์ฉํ ๋ ๋ฐ์ํ๋ SQL ๋ฑ์ ํ์ธํ๊ธฐ ์ํด์๋ ์ฝ๊ฐ์ ์ถ๊ฐ ์ค์ ํ์
์์ ์ธ๊ฐ์ง ํญ๋ชฉ์ ์ถ๊ฐํ ํ ํ๋ก์ ํธ๋ฅผ ์คํํ๋ฉด ๋ฐ์ดํฐ๋ฒต์ค์ ์ด๋ค ํ ์ด๋ธ์ด ์์ฑ๋๋ ์ง ๋ก๊ทธ๋ฅผ ํตํด์ ํ์ธํ ์ ์๋ค.
ํ ์ด๋ธ์ด ์ ์์ฑ๋๋ค์ฌ
2.4.3 JpaRepository ์ธํฐํ์ด์ค
Spring Data JPA์ ๊ตฌํ์ฒด์ธ Hibernate๋ฅผ ์ด์ฉํ๊ธฐ ์ํ ์ฌ๋ฌ API๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ทธ ์ค์์ ๊ฐ๋ฐ์๊ฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ ๊ฒ์ด ๋ฐ๋ก JpaRepository๋ผ๋ ์ธํฐํ์ด์ค ์ ๋๋ค.
CRUD ์์ ์ด๋ ํ์ด์ง, ์ ๋ ฌ ๋ฑ์ ์ฒ๋ฆฌ๋ ์ธํฐํ์ด์ค์ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ํํ๋ก ์ฒ๋ฆฌํ๋๋ฐ,
๊ธฐ๋ฅ์ ๋ฐ๋ผ์ ์์๊ตฌ์กฐ๋ก ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
-> JpaRepository๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ๋ฌด๋ํ ์ ํ
JpaRepository ์ฌ์ฉํ๊ธฐ
JpaRepository๋ ์ธํฐํ์ด์ค์ด๊ณ , Spring Data JPA๋ ์ด๋ฅผ ์์ํ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ์ธํ๋ ๊ฒ๋ง์ผ๋ก๋ ๋ชจ๋ ์ฒ๋ฆฌ๊ฐ ๋๋๋ ๋ง๋ฒ๊ฐ์ ์ผ์ด ๋ฒ์ด์ง๋๋ค.
JpaRepository ์ธํฐํ์ด์ค๋ฅผ ์์ํ๋ ๊ฒ๋ง์ผ๋ก ๋ชจ๋ ์์ ์ด ๋๋ฉ๋๋ค.
JpaRepository๋ฅผ ์ฌ์ฉํ ๋๋ ์ํฐํฐ์ ํ์ ์ ๋ณด์ @Id์ ํ์ ์ ์ง์ ํ๊ฒ ๋ฉ๋๋ค.
์ด์ฒ๋ผ Spring Data JPA๋ ์ธํฐํ์ด์ค ์ ์ธ๋ง์ผ๋ก๋ ์๋์ผ๋ก ์คํ๋ง์ ๋น์ผ๋ก ๋ฑ๋ก๋ฉ๋๋ค.
'Spring > ๐ฅ[spring]์ฝ๋๋ก ๋ฐฐ์ฐ๋ ์คํ๋ง ๋ถํธ ์น ํ๋ก์ ํธ_๊ตฌ๋ฉ๊ฐ๊ฒ ์ฝ๋ฉ๋จ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2.6.2 @Query ์ด๋ ธํ ์ด์ (0) | 2023.01.31 |
---|---|
2.6 ์ฟผ๋ฆฌ ๋ฉ์๋(Query Methods)๊ธฐ๋ฅ๊ณผ @Query (0) | 2023.01.30 |
2.5 ํ์ด์ง/ ์ ๋ ฌ ์ฒ๋ฆฌํ๊ธฐ (0) | 2023.01.29 |
2.4.3 JpaRepository ์ธํฐํ์ด์ค (0) | 2023.01.29 |
02 Maria ๋ฐ์ดํฐ๋ฒ ์ด์ค์ Spring Data JPA 2.2~ (0) | 2023.01.27 |