반응형

@Entity와 @Table은 명확하게 차이점을 명확하게 하기 위해 기록합니다.

간략 설명

@Entity는 엔티티 클래스를 정의

@Table은 해당 엔티티 클래스와 데이터베이스 테이블 간의 매핑을 세부적으로 제어할 때 사용

@Entity

JPA에서 사용하며 Java 클래스를 영속성을 가진 엔티티로 정의하는데 사용합니다.

엔티티 클래스에 @Entitiy 지정하면 해당 클래스가 데이터베이스 테이블과 매핑되는 엔티티로 간주됩니다. 이 클래스의 객체는 데이터베이스에서 저장, 검색이 가능해집니다.

@Entity(name="user")
public class User{
}

//DB에 user로 테이블이 생성되고 EntityManger 
//쿼리를 사용하는 경우 createQuert("SELECT ....FROM user")로 사용할 수 있습니다.

 

@Entity
public class Customer {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;
}

@Table

데이터베이스 테이블과 매핑할 때 테이블의 세부 정보를 정의합니다.(외부에서 호출하는 용도가 아닌 실제 DB에 붙을 테이블명을 결정해 줍니다.) @Table 주석을 사용하여 테이블의 이름, 스키마, 고유 제약 조건 등과 같은 테이블 수준의 설정을 정의할 수 있습니다.

 

@Entity
@Table(name = "customers", schema = "public")
public class Customer {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;
}

@Entity 주석은 Customer 클래스를 엔티티로 정의하고 @Table주석은 해당 엔티티를 데이터베이스의 customers 테이블과 매핑하여 public 스키마에 속한다고 지정합니다.

728x90

'Spring(Boot & FrameWork)' 카테고리의 다른 글

지연 로딩 & 즉시 로딩  (0) 2023.11.15
디자인 패턴  (1) 2023.11.13
ORM  (0) 2023.11.10