๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒท Spring/๊ฐœ๋…

[Spring][JAP] ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค์— ์“ฐ์ด๋Š” @Table๋ž€ ๋ฌด์—‡์ผ๊นŒ?

by ._.sori 2026. 3. 27.

 

 

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 ์นผ๋Ÿผ์ด ์ด ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค๋กœ ์„ค์ •์‹œ์ผฐ๋‹ค.

 

 

 

 


 

 

- @Table

 

[JPA] ์—”ํ‹ฐํ‹ฐ์™€ ๋งคํ•‘. @Entity, @Table, @Id, @Column..

| ์—”ํ‹ฐํ‹ฐ์™€ ๋งคํ•‘ ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ” ๋งคํ•‘ : @Entity, @Table๊ธฐ๋ณธ ํ‚ค ๋งคํ•‘ : @Idํ•„๋“œ์™€ ์ปฌ๋Ÿผ ๋งคํ•‘ : @Column์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘ : @ManyToOne, @JoinColumn 12345678910111213141516171819202122232425262728293031323334353637383940414243@Entity// n

data-make.tistory.com