Spring Boot์์ JPA์ ํจ๊ป ์ฌ์ฉ๋๋ Entity ID ์์ฑ ์ ๋ต์ ์ฃผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋ณธ ํค(primary key)๋ฅผ ์๋ ์์ฑํ๋ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฅผ ์ํด ๋ค์ํ ์ ๋ต์ด ์ฌ์ฉ๋๋ฉฐ, ์ฃผ์ ์ ๋ต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
GenerationType.AUTO (๊ธฐ๋ณธ ์ ๋ต)
์ด ์ ๋ต์ JPA๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ๋ผ ์๋์ผ๋ก ์ ํํ๋ ID ์์ฑ ์ ๋ต์
๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ๋ผ GenerationType.SEQUENCE, GenerationType.IDENTITY, GenerationType.TABLE ์ค ํ๋๋ฅผ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
@Entity
public class MyEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
}
GenerationType.IDENTITY
์ด ์ ๋ต์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ ์ฆ๊ฐ(auto-increment) ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ID๋ฅผ ์์ฑํฉ๋๋ค. MySQL, PostgreSQL, SQL Server ๋ฑ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
@Entity
public class MyEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
}
GenerationType.SEQUENCE
์ด ์ ๋ต์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ์ค(sequence) ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ID๋ฅผ ์์ฑํฉ๋๋ค. ์ํ์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ณ ์ ํ ๊ฐ์ ์์ฐจ์ ์ผ๋ก ์์ฑํ๋ ๊ฐ์ฒด์
๋๋ค. ์ฃผ๋ก Oracle, PostgreSQL ๋ฑ์์ ์ฌ์ฉ๋ฉ๋๋ค. ์ํ์ค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด @SequenceGenerator ์ด๋
ธํ
์ด์
์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
@Entity
public class MyEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "my_entity_seq")
@SequenceGenerator(name = "my_entity_seq", sequenceName = "my_entity_seq", allocationSize = 1)
private Long id;
}
GenerationType.TABLE
์ด ์ ๋ต์ ๋ณ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ์ ์ฌ์ฉํ์ฌ ID๋ฅผ ์์ฑํฉ๋๋ค. ์ด ํ
์ด๋ธ์ ๋ชจ๋ ์ํฐํฐ์ ๋ํ ID๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, ์ฌ๋ฌ ์ํฐํฐ์์ ๊ณต์ ํ ์ ์์ต๋๋ค. @TableGenerator ์ด๋
ธํ
์ด์
์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
@Entity
public class MyEntity {
@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "my_entity_gen")
@TableGenerator(name = "my_entity_gen", table = "id_gen", pkColumnName = "gen_name", valueColumnName = "gen_val", allocationSize = 1)
private Long id;
}
์์ ์ ๋ต ์ค ํ๋๋ฅผ ์ ํํ์ฌ Spring Boot ํ๋ก์ ํธ์์ Entity ID ์์ฑ ์ ๋ต์ ๊ตฌํํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ข ๋ฅ์ ์ฑ๋ฅ, ํ์ฅ์ฑ ๋ฑ์ ์๊ตฌ์ฌํญ์ ๊ณ ๋ คํ์ฌ ์ ์ ํ ์ ๋ต์ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
'๐ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ธํ ๋ฆฌ์ ์ด ํ์๋ฆฌํ th:object ๋นจ๊ฐ์ ์ค๋ฅ ์ก๊ธฐ (0) | 2023.07.02 |
---|---|
[์ ๋ณด] Spring Boot Cache ์ฌ์ฉ๋ฐฉ๋ฒ ๋ฐ ์ฃผ์ ์ฌํญ (0) | 2023.03.21 |
[์ ๋ณด] SQL ๋ฐ์ดํฐ ํค ๊ฐ ๋น ๊ณต๋ฐฑ ์ฑ์ฐ๊ธฐ (0) | 2023.03.15 |
[์ ๋ณด] jpa repository ์ฟผ๋ฆฌ๋ฌธ ์์ฑ ์ ์ฃผ์์ (0) | 2023.03.12 |
[์๋ฐ] OTP ์ธ์ฆ์ฝ๋ ์์ฑ ์์ค์ฝ๋ (0) | 2023.02.21 |