@GeneratedValue strategy

entity identifier๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ „๋žต์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

GenerationType.AUTO

  • ์‹๋ณ„์ž ์ƒ์„ฑ์‹œ JPA ๊ตฌํ˜„์ฒด์˜ ๊ธฐ๋ณธ ์ „๋žต์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

  • Spring Boot 2.x์˜ JPA ๊ตฌํ˜„์ฒด์ธ Hibernate 5.0 ๊ธฐ์ค€

    • MySQL์€ GenerationType.TABLE ์ „๋žต์ด ์„ ํƒ๋ฉ๋‹ˆ๋‹ค.

GenerationType.IDENTITY

  • ์‹๋ณ„์ž ์ƒ์„ฑ์„ DBMS์— ์œ„์ž„ํ•ฉ๋‹ˆ๋‹ค.

    • AutoIncrement๋ฅผ ์ง€์›ํ•˜๋Š” MySQL, PostgreSQL, SQL Server, DB2์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

GenerationType.SEQUENCE

  • ์‹๋ณ„์ž ์ƒ์„ฑ์‹œ DB Sequence๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    • Sequence๋ฅผ ์ง€์›ํ•˜๋Š” DBMS์ธ Oracle, PostgreSQL, DB2, H2 DB์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

GenerationType.TABLE

  • ์‹๋ณ„์ž ์ƒ์„ฑ์‹œ ๋ณ„๋„์˜ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • DB Sequence๋ฅผ ํ‰๋‚ด๋‚ธ ๋ฐฉ์‹์œผ๋กœ ๋ณ„๋„์˜ table์„ ํ™œ์šฉํ•˜๊ธฐ์— ์ถ”๊ฐ€์ ์ธ DB ์ปค๋„ฅ์…˜์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

    • ๋‚˜์•„๊ฐ€ ๋ถ€์ •ํ•ฉ์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์–ด ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

SpringBoot 1.5.x์™€ 2.0.x์˜ ์ฐจ์ด

์‹๋ณ„์ž ์ƒ์„ฑ ์ „๋žต์ด GenerationType.IDENTITY์—์„œ GenerationType.TABLE์œผ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์ด์ € ๋ฒ„์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ํ•„์š”ํ•œ ํ™˜๊ฒฝ์—์„œ๋Š” ๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ์—ˆ๊ฒ ์ง€๋งŒ, ์ œ๊ฐ€ ์ผํ•˜๋Š” ํ™˜๊ฒฝ์€ ์ด๋ฏธ ๋‹ค 2.5.x ์˜€๊ธฐ ๋•Œ๋ฌธ์— ์ง€์‹์œผ๋กœ๋งŒ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • Spring Boot 2.x์˜ JPA ๊ตฌํ˜„์ฒด์ธ Hibernate 5.0 ๊ธฐ์ค€, MySQL์€ GenerationType.TABLE ์ „๋žต์ด ์„ ํƒ๋ฉ๋‹ˆ๋‹ค.

  • Hibernate์˜ ID ์ƒ์„ฑ ์ „๋žต์„ ๋”ฐ๋ผ ๊ฐˆ์ง€ ๋ง์ง€ ๊ฒฐ์ •ํ•˜๋Š” useNewIdGeneratorMappings ํ”„๋กœํผํ‹ฐ๊ฐ€ 1.5.x ๋ฒ„์ „์˜ false์—์„œ 2.0.x ์—๋Š” true๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์ฆ‰ ์‹๋ณ„์ž ์ƒ์„ฑ ์ „๋žต์ด JPA ๊ตฌํ˜„์ฒด์— ์ข…์†์ ์ด๊ฒŒ ์„ค์ •์ด ๋ฐ”๋€Œ๋ฉด์„œ GenerationType.TABLE์ด ์„ ํƒ ๋ฉ๋‹ˆ๋‹ค.

Last updated

Was this helpful?