Entity๋ฅผ ์์ฑํ๋ฉด์
DB์ ํ ์ด๋ธ๊ณผ ์ฐ๊ฒฐ์ํค๊ธฐ ์ํด
@Table์ ์ฌ์ฉํ๋ค.
@Table์ด ์ ํํ ์ด๋ค ์ญํ ์ ํ๋๊ฑธ๊น?
@Table
- ์ํฐํฐ ํด๋์ค๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด๋ค ํ ์ด๋ธ๊ณผ ๋งคํ๋๋์ง๋ฅผ ๋ช ์ํ๋ ์ญํ ์ ํ๋ค.
- ์ด ์ด๋
ธํ
์ด์
์ ์๋ตํ๋ฉด, ๊ธฐ๋ณธ์ ์ผ๋ก ์ํฐํฐ ํด๋์ค์ ์ด๋ฆ์ ํ
์ด๋ธ ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ๊ฒ ๋๋ค.
→ ์์) @Table์ด ์ฝ๋์ ์๊ณ @Entity(name = "abc")๋ง ์กด์ฌํ๋ ๊ฒฝ์ฐ, @Entity์ name ์์ฑ์ ์ํด Entity์ Table ์ด๋ฆ์ด ๋ชจ๋ ๊ฒฐ์ ๋๋ค.
@Table์ ์์ฑ
- name
: ๋งคํํ ํ ์ด๋ธ์ ์ด๋ฆ์ ์ง์ ํ๋ค. - uniqueConstraints
: ํ ์ด๋ธ ์์ฑ ์ ์ ๋ํฌ(Unique) ์ ์ฝ ์กฐ๊ฑด์ ์ค์ ํ๋ค. - indexes
: ํ ์ด๋ธ์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ๋ ์ฌ์ฉํ๋ค. - catalog / schema
: DB์ ์นดํ๋ก๊ทธ๋ ์คํค๋ง๋ฅผ ์ง์ ํด์ผ ํ ๋ ์ฌ์ฉํ๋ค. (DB ๊ตฌ์กฐ์ ๋ฐ๋ผ ์ ํ)
@Table์ ์ด์ฉํ ๊ฐ๋จํ ์ฝ๋ ์์
import javax.persistence.*;
@Entity
@Table(
name = "users", // DB์๋ 'users'๋ผ๋ ์ด๋ฆ์ ํ
์ด๋ธ๋ก ์์ฑ๋จ
uniqueConstraints = {
@UniqueConstraint(
name = "unique_email_constraint",
columnNames = {"email"} // ์ด๋ฉ์ผ ์ปฌ๋ผ์ ์ค๋ณต ๋ฐฉ์ง ์ ์ฝ ์ถ๊ฐํจ
)
}
)
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)
private String username;
@Column(nullable = false)
private String email;
}
์์ ์ฝ๋๋ ์ฌ์ฉ์์ ์ ๋ณด๋ฅผ ๋ด์ User ์ํฐํฐ์ @Table์ ์ ์ฉํ ์์์ด๋ค. ํ ์ด๋ธ ์ด๋ฆ์ users๋ก ๋ฐ๊พธ๊ณ , ์ด๋ฉ์ผ์ ์ ๋ํฌ ์ ์ฝ ์กฐ๊ฑด์ ๊ฑธ์๋ค. ๋ง์ฝ์ MySQL๋ก DB๋ฅผ ์์ฑํ๋ค๋ฉด ์์ ์ค์ ์ด SQL์ ์ด๋ค ๊ตฌ๋ฌธ์ผ๋ก ๋ณํ๋ ๊น?
CREATE TABLE users (
id BIGINT NOT NULL AUTO_INCREMENT,
username VARCHAR(10) NOT NULL,
email VARCHAR(100) NOT NULL,
PRIMARY KEY (id),
CONSTRAINT unique_email_constraint UNIQUE (email)
)
ํ ์ด๋ธ ์ด๋ฆ์ users๊ฐ ๋๊ณ , ์ด๋ฉ์ผ ์ปฌ๋ผ์ ์ค๋ณต ๋ฐฉ์ง ์ ์ฝ์ ์ถ๊ฐํ๋ค. CONSTRAINT ์ ์ฝ์กฐ๊ฑด์์ด๋ฆ UNIQUE(A) ๊ตฌ๋ฌธ์ ์ถ๊ฐํ๋ฉด ๋์ผํ A๊ฐ ์ค๋ณต ์ ์ฅ๋๋ ๊ฒ์ DB๋ ๋ฒจ์์ ์ฐจ๋จํ๋ค.
๊ทธ ์ธ ์ฝ๋๋ค์ ๊ฐ๋จํ๊ฒ ์ค๋ช ํ๊ฒ ๋ค. id๋ ์ปฌ๋ผ์ ์ด๋ฆ์ด๊ณ , BIGINT๋ Java์ Long ํ์ ์ ๋์ํ๋ ๋์ฉ๋ ์ ์ ํ์ ์ด๋ค. NOTNULL์ ์ด ์ปฌ๋ผ ๋ด์ ์ ๋ ๋น ๊ฐ์ด ๋ค์ด์ฌ ์ ์๋ค๋ ๊ฑธ ์๋ฏธํ๋ค. AUTO_INCREMENT๋ ์ ๋ฐ์ดํฐ๊ฐ ์ฝ์ ๋ ๋๋ง๋ค ๊ฐ์ 1,2,3... ์์๋๋ก ์๋ ์ฆ๊ฐ์์ผ ์ ์ฅํ๋ค.
์๋ ์ฝ๋๋ ๋น์ทํ๋ค. VARCHAR(100)์ ์ต๋ 100์๊น์ง ์ ์ฅ ๊ฐ๋ฅํ๋๋ก ํ๋ค. PRIMARY KEY(id)๋ฅผ ์ถ๊ฐํ์ฌ id ์นผ๋ผ์ด ์ด ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ก ์ค์ ์์ผฐ๋ค.
[JPA] ์ํฐํฐ์ ๋งคํ. @Entity, @Table, @Id, @Column..
| ์ํฐํฐ์ ๋งคํ ๊ฐ์ฒด์ ํ ์ด๋ธ ๋งคํ : @Entity, @Table๊ธฐ๋ณธ ํค ๋งคํ : @Idํ๋์ ์ปฌ๋ผ ๋งคํ : @Column์ฐ๊ด๊ด๊ณ ๋งคํ : @ManyToOne, @JoinColumn 12345678910111213141516171819202122232425262728293031323334353637383940414243@Entity// n
data-make.tistory.com