๐ง @Column
@Column์ ๊ฐ์ฒด ํ๋๋ฅผ ํ ์ด๋ธ์ ์ปฌ๋ผ์ ๋งคํ์์ผ์ฃผ๋ ์ด๋ ธํ ์ด์ ์ ๋๋ค.
์์ฑ
์์ฑ | ๊ธฐ๋ฅ | ๊ธฐ๋ณธ๊ฐ |
name | ํ๋์ ๋งคํํ ํ ์ด๋ธ์ ์ปฌ๋ผ ์ด๋ฆ์ ์ง์ ํ๋ค. | ๊ฐ์ฒด์ ํ๋ ์ด๋ฆ |
insertable (๊ฑฐ์ ์ฌ์ฉํ์ง ์์) |
์ํฐํฐ ์ ์ฅ ์ ์ด ํ๋๋ ๊ฐ์ด ์ ์ฅํ๋ค. false๋ก ์ค์ ํ๋ฉด ์ด ํ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ์ง ์๋๋ค. false ์ต์ ์ ์ฝ๊ธฐ ์ ์ฉ์ผ ๋ ์ฌ์ฉํ๋ค |
true |
updateable | ์ํฐํฐ ์์ ์ ์ด ํ๋๋ ๊ฐ์ด ์์ ํ๋ค. false๋ก ์ค์ ํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ ํ์ง ์๋๋ค. false ์ต์ ์ ์ฝ๊ธฐ ์ ์ฉ์ผ ๋ ์ฌ์ฉํ๋ค |
true |
table (๊ฑฐ์ ์ฌ์ฉํ์ง ์์) |
ํ๋์ ์ํฐํฐ๋ฅผ ๋ ๊ฐ ์ด์์ ํ
์ด๋ธ์ ๋งคํํ ๋ ์ฌ์ฉํ๋ค.(@SecondaryTable ์ฌ์ฉ) ์ง์ ํ ํ๋๋ฅผ ๋ค๋ฅธ ํ ์ด๋ธ์ ๋งคํํ ์ ์๋ค. |
ํ์ฌ ํด๋์ค๊ฐ ๋งคํ๋ ํ ์ด๋ธ |
nullable (DDL) | DDL ์์ฑ ์ null ๊ฐ์ ํ์ฉ ์ฌ๋ถ๋ฅผ ์ค์ ํ๋ค. false๋ก ์ค์ ํ๋ฉด not null ์ ์ฝ์กฐ๊ฑด์ด ๋ถ๋๋ค. |
true |
unique (DDL) | @Table์ uniqueConstraints์ ๊ฐ์ผ๋ ํ ์ปฌ๋ผ์ ๊ฐ๋จํ ์ ๋ํฌ ์ ์ฝ์กฐ๊ฑด์ ๊ฑธ ๋ ์ฌ์ฉํ๋ค. | false |
columnDefinition (DDL) | ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปฌ๋ผ ์ ๋ณด๋ฅผ ์ง์ ์ค ์ ์๋ค. | ์๋ฐ ํ๋์ ํ์
๊ณผ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฉ์ธ ์ค์ ์ ๋ณด๋ฅผ ์ฌ์ฉํด ์ ์ ํ ์์ฑ |
length (DDL) | ๋ฌธ์ ๊ธธ์ด ์ ์ฝ์กฐ๊ฑด, String ํ์ ์๋ง ์ฌ์ฉํ๋ค. | 255 |
precision, scale (DDL) | BigDecimal ํ์
(ํน์ BigInteger)์์ ์ฌ์ฉํ๋ค. precision์ ์์์ ์ ํฌํจํ ์ ์ฒด ์๋ฆฌ์๋ฅผ, scale์ ์์์ ์๋ฆฌ์๋ค. |
precision = 0, scale = 0 |
์์
name
@Column(name = "MEMBER_NAME")
private String name;
columnDefinition
@Column(columnDefinition = "varchar (100) default 'EMPTY'")
private String data;
โญ๏ธ [์ฐธ๊ณ ] @Column์ unique ์์ฑ ์ฌ์ฉ ์
@Column์ unique ์์ฑ์ true๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ ์ ๋ํฌ ์ ์ฝ์กฐ๊ฑด์ ์ด๋ฆ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํฉ๋๋ค.
UK_dqwjdiowqfnjoiwqfejwqe34912mdqw
์์ ๊ฐ์ด ์์์ ๋๋คํ ์ด๋ฆ์ ์ฌ์ฉํ๋ฏ๋ก ์์๋ณด๊ธฐ ํ๋ญ๋๋ค.
๋ฐ๋ผ์ @Column์ unique ์์ฑ๋ณด๋ค๋ @Table์ uniqueConstraints ์์ฑ์ ์ฌ์ฉํ์ฌ, ์ ์ฝ์กฐ๊ฑด์ ์ด๋ฆ์ ๊ฑธ์ด์ฃผ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํฉ๋๋ค.
๋ค์์ ์ฝํ๋ฆฐ์ ์ฌ์ฉํ ์์์ ๋๋ค.
@Entity
@Table(name = "member", uniqueConstraints = [
UniqueConstraint(columnNames = ["member_data"], name = "unique_data")
])
class Member(
@Id @Column(name = "member_id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
var id: Long = 0,
@Column(name = "member_data")
var data: String,
) {
}
โญ๏ธ [์ฐธ๊ณ ] @Column์ ์๋ต
@Column์ ์๋ตํ๋ค๋ฉด ๋๋ถ๋ถ์ @Column ์์ฑ์ด ๊ธฐ๋ณธ์ผ๋ก ์ ์ฉ๋์ด์ง๋๋ค.
๊ทธ๋ฌ๋ ์๋ฐ ๊ธฐ๋ณธ ํ์ (int, double ๋ฑ)์ผ ๋๋ nullable ์์ฑ์ ์์ธ๊ฐ ์์ต๋๋ค.
๋ค์ ์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด์ ํ์ธํ๊ฒ ์ต๋๋ค.
int data1; //@Column์๋ต, ์๋ฐ ๊ธฐ๋ณธ ํ์
Integer data2; //@Column์๋ต, ์๋ฐ ๊ฐ์ฒด ํ์
@Column
int data1; //@Column์ฌ์ฉ, ์๋ฐ ๊ธฐ๋ณธ ํ์
์ฐ์ @Column์ ์๋ตํ ์๋ฐ ๊ธฐ๋ณธ ํ์ ์ ๊ฒฝ์ฐ, DDL ์์ฑ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑ๋ฉ๋๋ค.
data1 integer not null
@Column์ ์๋ตํ ์๋ฐ ๊ฐ์ฒด ํ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
data2 integer
๋ง์ง๋ง์ผ๋ก @Column์ ์ฌ์ฉํ ์๋ฐ ๊ธฐ๋ณธ ํ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
data3 integer
int data1 ๊ณผ ๊ฐ์ ์๋ฐ ๊ธฐ๋ณธ ํ์ ์๋ null์ ์ ๋ ฅํ ์ ์์ต๋๋ค.
๊ฐ์ฒด ํ์ ์ธ ๊ฒฝ์ฐ์๋ง null๊ฐ์ด ํ์ฉ๋ฉ๋๋ค.
๋ฐ๋ผ์ ์๋ฐ ๊ธฐ๋ณธ ํ์ ์ not null ์ ์ฝ์กฐ๊ฑด์ ๋ถ์ฌ์ฃผ๋ ๊ฒ์ด ์์ ํฉ๋๋ค.
JPA๋ ์ด๋ฅผ ๊ณ ๋ คํ์ฌ DDL ์์ฑ ๊ธฐ๋ฅ ์ฌ์ฉ ์, ์๋ฐ์ ๊ธฐ๋ณธ ํ์ ์๋ not null ์ ์ฝ์กฐ๊ฑด์ ์ถ๊ฐํด์ค๋๋ค
๊ทธ๋ฌ๋ @Column์ ์ฌ์ฉํด๋ฒ๋ฆฌ๋ฉด, ๊ธฐ๋ณธ๊ฐ์ด nullable = true์ด๋ฏ๋ก not null ์ ์ฝ์กฐ๊ฑด์ ์ค์ ํ์ง ์์ต๋๋ค
๋ฐ๋ผ์ ์๋ฐ ๊ธฐ๋ณธ ํ์ ์ @Column์ ์ฌ์ฉํ๋ค๋ฉด, nullable = false๋ก ์ง์ ํ๋ ๊ฒ์ด ์์ ํฉ๋๋ค.
Reference
[์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊น์ํ]
'๐๏ธ Spring > JPA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JPA] ํ๋์ ์ปฌ๋ผ ๋งคํ - @Temporal (0) | 2021.12.14 |
---|---|
[JPA] ํ๋์ ์ปฌ๋ผ ๋งคํ - @Enumerated (0) | 2021.12.14 |
[JPA] ์ํฐํฐ ๋งคํ - @Entity, @Table (0) | 2021.12.13 |
[JPA] ํ๋ฌ์์ ํ๋ฌ์ ํ์ (FlushModeType) (0) | 2021.12.12 |
[JPA] ์ํฐํฐ์ ์๋ช ์ฃผ๊ธฐ - ๋น์์, ์์, ์ค์์, ์ญ์ (0) | 2021.12.12 |