@Entity
JPA를 사용해 테이블과 매핑할 때는 @Entity 어노테이션을 필수로 붙여주어야 하며 @Entity 어노테이션을 클래스 위에 붙여 해당 클래스가 데이터베이스의 테이블과 매핑된 것을 명시합니다. @Entity가 붙게 되면 JPA가 관리하게 됩니다.
@Entity
public class User {
@Id
private Long id;
private String username;
private String email;
}
@Entity 주의사항
기본 생성자는 필수입니다.
final 클래스, enum, interface, inner클래스는 사용 불가능 합니다.
저장 필드에 final을 사용하면 안 됩니다.
@Table
엔티티 클래스가 매핑되는 데이터베이스의 테이블을 지정할 때 사용됩니다. 이 어노테이션을 사용하여 특정 엔티티 클래스가 매핑될 데이터베이스 테이블의 이름, 스키마 인덱스 등을 정의할 수 있습니다.
@Entity
@Table(name = "users", schema = "public")
public class User {
@Id
private Long id;
private String username;
private String email;
}
DDL 생성 기능
데이터 베이스 객체를 자동으로 생성하는 기능이며 이 기능은 ORM 도구에서 제공되며, 엔티티 클래스 기반으로 데이터베이스 스키마를 생성 및 업데이트하는 데 사용됩니다.
대부분 ORM프레임 워크들은 엔티티 클래스를 기반으로 데이터베이스 테이블을 자동으로 생성해 주는 기능을 제공하며 이를 통해서 객체 지향 적인 코드를 작성하며 데이터 베이스와의 연동을 수월하게 할 수 있습니다.
@Entity
@Table(name = "user")
public class User{
@Id
@Column(name = "ID")
private String id;
@Column(name = "NAME", nullable = false, length = 10)
private String username;
}
기본키 매핑
JPA에서 엔티티 클래스의 필드를 데이터베이스 테이블의 기본키와 매핑하는 것을 의미합니다. 기본키는 데이터베이스 테이블에서 각 레코드를 고유하게 식별하는 열로, 엔티티 클래스의 필드 중 하나를 기본키로 지정하여 매핑합니다.
@Entity
public class User{
@Id
@Column(name = "ID")
private String id;
}
@Column
엔티티 클래스의 특정 필드를 데이터베이스 테이블의 컬럼과 매핑하는 데 사용됩니다. 이 어노테이션을 사용하여 데이터베이스의 컬럼에 대한 세부적인 설정을 지정할 수 있습니다. @Column에는 많은 기능들이 있지만 보통 name, nullable이 주로 사용합니다.
@Entity
public class User {
@Id
private Long id;
@Column(name = "USERNAME", length = 50, nullable = false)
private String username;
}
@Access
엔티티 클래스의 접근 방식을 설정하는 데 사용됩니다. 이 어노테이션을 사용하여 엔티티 클래스의 필드나 프로퍼티에 접근하는 방식을 제어할 수 있습니다.
필드 접근
AccessType.FIELD로 지정하며 필드에 직접 접근합니다.
@Entity
@Access(AccessType.FIELD)
public class User {
@Id
private Long id;
private String username;
}
프로퍼티 접근
AccessType.PROPERTY로 지정하며 접근자를 사용합니다.
@Entity
@Access(AccessType.PROPERTY)
public class User {
@Id
private Long id;
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
'Spring(Boot & FrameWork)' 카테고리의 다른 글
JUnit5 Basic (0) | 2023.12.18 |
---|---|
MyBatis (0) | 2023.12.12 |
Validation (0) | 2023.12.06 |