반응형
@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 |