๐ Backend/โ๏ธ JPA
@GeneratedValue์ ์ ๋ต๊ณผ Insert์ฟผ๋ฆฌ ์คํ ์์ ๊ณผ์ ๊ด๊ณ
DevPoong
2022. 9. 6. 12:03
1. ๊ธฐ๋ณธ ํค ํ ๋น ๋ฐฉ๋ฒ
(1) ์ง์ ํ ๋น์ ๊ฒฝ์ฐ
@Id
private Long id;
(2) ์๋ ์์ฑ ํ ๋น์ ๊ฒฝ์ฐ
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY OR AUTO OR SEQUNCE OR TABLE)
private Long id;
2. ์๋ ์์ฑ ํ ๋น ์ ๋ต
(1) IDENTITY
- PK ์์ฑ์ DB์ ์์ํ๋ค.
- DB๊ฐ ์์์ AUTO INCREMENT๋ก ๊ด๋ฆฌํด์ค๋ค.
- entityManger.persist()๊ฐ ์คํ๋๋ ์์ ์ ์ฆ์ INSERT ์ฟผ๋ฆฌ๊ฐ ์คํ๋์ด DB์ ๋ฐ์๋๊ณ DB์์ PK๋ฅผ ์์ฑํด์ ์๋ ํ ๋นํ๋ฉฐ ์์์ฑ ์ปจํ
์คํธ์ 1์ฐจ ์บ์์ ๊ฐ์ ์ ์ฅํ๋ค.
- ์ด๊ฑธ ์๋ฉด ๊ฐ์ ํธ๋์ญ์ ๋ด์์๋ persist()์ดํ์๋ SELECT ์ฟผ๋ฆฌ๋ก ID๋ฅผ ์กฐํํ์ง ์์๋ ๋ฐ๋ก getId()๋ฅผ ํตํด ์๋ณ์๋ฅผ ์ป์ ์ ์๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก JPA๋ ํธ๋์ญ์ COMMIT ์์ ์ INSERT ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ง๋ง IDENTITY๋ ์์ธ์ด๋ค.