SEQUENCE ์ ๋ต, TABLE ์ ๋ต
SEQUENCE ์ ๋ต์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ์ค๋ฅผ ์ฌ์ฉํด์ ๊ธฐ๋ณธ ํค๋ฅผ ํ ๋นํด์ฃผ๋ ์ ๋ต์ ๋๋ค.
์ฌ์ฉ ๋ฐฉ๋ฒ์ ์๋ ๊ธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์
SEQUENCE ์ ๋ต์ ์ต์ ํ. - allocationSize
SequenceGenerator์ allocationSize์ ๊ธฐ๋ณธ๊ฐ์ 50์ ๋๋ค.
๋ฐ๋ผ์ ์ํ์ค๋ฅผ ํธ์ถํ ๋๋ง๋ค ๊ฐ์ด 50์ฉ ์ฆ๊ฐํฉ๋๋ค.
์ ๊ธฐ๋ณธ๊ฐ์ 50์ผ๋ก ์ค์ ํ์๊น์?
SEQUENCE ์ ๋ต์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ์ค๋ฅผ ํตํด ์๋ณ์๋ฅผ ์กฐํํ๋ ์ถ๊ฐ ์์ ์ด ํ์ํฉ๋๋ค.
๋ฐ๋ผ์ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ 2๋ฒ ํต์ ํฉ๋๋ค.
- ์๋ณ์๋ฅผ ๊ตฌํ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ์ค๋ฅผ ์กฐํํฉ๋๋ค
- ์กฐํํ ์ํ์ค๋ฅผ ๊ธฐ๋ณธ ํค ๊ฐ์ผ๋ก ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํฉ๋๋ค.
JPA๋ ์ํ์ค์ ์ ๊ทผํ๋ ํ์๋ฅผ ์ค์ด๊ธฐ ์ํด allocationSize๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ฐ๋จํ ์ค๋ช ํ์๋ฉด allocationSize๋ก ์ค์ ํ ๊ฐ ๋งํผ ํ๋ฒ์ ์ํ์ค ๊ฐ์ ์ฆ๊ฐ์ํค๊ณ ๋์, ๊ทธ๋งํผ ๋ฉ๋ชจ๋ฆฌ์ ์ํ์ค ๊ฐ์ ํ ๋นํฉ๋๋ค.
์๋ฅผ ๋ค์ด allocationSize๊ฐ 50์ด๋ผ๋ฉด, ์ํ์ค๋ฅผ ํ ๋ฒ ์กฐํ ์ 50์ ์ฆ๊ฐ์ํจ ๋ค์์, 1~50 ๊น์ง๋ ๋ฉ๋ชจ๋ฆฌ์์ ์๋ณ์๋ฅผ ํ ๋นํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ 51์ด ๋๋ฉด ์ํ์ค ๊ฐ์ 100์ผ๋ก ์ฆ๊ฐ์ํจ ๋ค์ 51~100๊น์ง ๋ฉ๋ชจ๋ฆฌ์์ ์๋ณ์๋ฅผ ํ ๋นํฉ๋๋ค.
์ด ๋ฐฉ๋ฒ์ ์ํ์ค ๊ฐ์ ์ ์ ํ๋ฏ๋ก ์ฌ๋ฌ JVM์์ ๋์์ ๋์ํด๋ ๊ธฐ๋ณธ ํค ๊ฐ์ด ์ถฉ๋ํ์ง ์๋๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ ์ ๊ทผํด์ ๋ฐ์ดํฐ๋ฅผ ๋ฑ๋กํ ๋ ์ํ์ค ๊ฐ์ด ํ๋ฒ์ ๋ง์ด ์ฆ๊ฐํ๋ฏ๋ก, ์ด๋ฐ ์ํฉ์ด ๋ถ๋ด์ค๋ฝ๊ณ INSERT ์ฑ๋ฅ์ด ์ค์ํ์ง ์๋ค๋ฉด allocationSize๋ฅผ 1๋ก ์ค์ ํ๊ณ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
์ฐธ๊ณ ๋ก @SequenceGenerator๋ ๋ค์๊ณผ ๊ฐ์ด @GeneratedValue ์์ ์ฌ์ฉํด๋ ์๊ด์์ต๋๋ค.
@Getter
@Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator = "BOARD_SEQ_GENERATOR")
@SequenceGenerator(
name = "BOARD_SEQ_GENERATOR",
allocationSize = 50
)
@Column(name = "MEMBER_ID")
private Long id;
}
TABLE ์ ๋ต์ ์ต์ ํ.
TABLE ์ ๋ต์ ๊ฐ์ ์กฐํํ๋ฉด์ SELECT ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ , ๋ค์ ๊ฐ์ผ๋ก ์ฆ๊ฐ์ํค๊ธฐ ์ํด UPDATE ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด ์ ๋ต์ SEQUENCE ์ ๋ต๊ณผ ๋น๊ตํด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋ฒ ๋ ํต์ ํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
TABLE ์ ๋ต๋ SEQUENCE ์ ๋ต๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก allocationSize๋ฅผ ํตํด ์ต์ ํ ํ ์ ์์ต๋๋ค.
๐ Reference
[์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊น์ํ]
'๐๏ธ Spring > JPA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JPA] ์๋ณ์(๊ธฐ๋ณธ ํค) ์ ํ ์ ๋ต (0) | 2021.12.14 |
---|---|
[JPA] ๊ธฐ๋ณธ ํค(Primary Key)๋งคํ - @Id, @GeneratedValue (0) | 2021.12.14 |
[JPA] ํ๋์ ์ปฌ๋ผ ๋งคํ - @ElementCollection (๊ฐ ํ์ ์ปฌ๋ ์ ๋งคํ), @CollectionTable (0) | 2021.12.14 |
[JPA] ํ๋์ ์ปฌ๋ผ ๋งคํ - @Access (0) | 2021.12.14 |
[JPA] ํ๋์ ์ปฌ๋ผ ๋งคํ - @Transient (0) | 2021.12.14 |