๐Ÿ“˜ Web/Spring, JPA

[JPA] @Entity, @Table, @Id, @GeneratedValue ์–ด๋…ธํ…Œ์ด์…˜

a n u e 2022. 7. 20. 13:57

 

@Entity

 : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์— ๋Œ€์‘ํ•˜๋Š” ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋ฅผ ์˜๋ฏธํ•จ

  ํ•ด๋‹น ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ถ™์€ ํด๋ž˜์Šค๋Š” JPA์—์„œ ๊ด€๋ฆฌ

  name ์†์„ฑ์ด ์žˆ๋‹ค. (@Entity(name="UserInfo"))

  JPA๋Š” JPQL์ด๋ผ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด๋•Œ ํ…Œ์ด๋ธ”๋ช…์ด ์•„๋‹Œ ์—”ํ‹ฐํ‹ฐ์˜ ์ด๋ฆ„์ด ์‚ฌ์šฉ๋œ๋‹ค.

  (select c from UserInfo c where c.id = 1; ์ด๋Ÿฐ ์‹)

 

 ์ฃผ์˜๐Ÿ–๏ธ

  : ๊ธฐ๋ณธ ์ƒ์„ฑ์ž(ํŒŒ๋ผ๋ฏธํ„ฐX) ํ•„์ˆ˜. ์ ‘๊ทผ ์ œ์–ด์ž๋Š” public, protected

    ์ €์žฅ ํ•  ํ•„๋“œ์— final์„ ๋ถ™์ด๋ฉด ํ…Œ์ด๋ธ”์— ๋งคํ•‘๋˜์ง€ ์•Š๋Š”๋‹ค.


@Table

 : ์—”ํ‹ฐํ‹ฐ์™€ ๋งคํ•‘ํ•  ํ…Œ์ด๋ธ” ์ง€์ •

 

@Id

  : pk๋ฅผ ์ง์ ‘ ์…‹ํŒ…

 

@GeneratedValue 

  : DBMS ์ข…๋ฅ˜์— ๋”ฐ๋ผ ๋งž์ถฐ ์ž๋™์ ์œผ๋กœ ๊ฐ’์„ JPA์—์„œ ์ƒ์„ฑํ•ด ์ž…๋ ฅํ•ด์ค€๋‹ค

    strategy๋ผ๋Š” ์†์„ฑ์˜ ์˜ต์…˜์ด ์žˆ๋Š”๋ฐ, ์ž๋™ ์ƒ์„ฑ ๊ฐ’์„ ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ•  ์ง€ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

    ํ•˜๋‹จ์˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ, IDENTITY๋กœ ์ง€์ •ํ•˜๋ฉด ๊ธฐ๋ณธ ํ‚ค ์ƒ์„ฑ์„ DBMS์—๊ฒŒ ์œ„์ž„ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ํ•ด๋‹น ํ•„๋“œ ๊ฐ’์ด null๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ, DB์—์„œ AUTO_INCREMENT ํ•ด์ค€๋‹ค. ์˜ต์…˜์€ ์™ธ์—๋„ AUTO, SEQUENCE ๋“ฑ์ด ์žˆ๋‹ค.