๐ŸŒ 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๋Š” ์˜ˆ์™ธ์ด๋‹ค.