반응형

@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;
    }
}
728x90

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

JUnit5 Basic  (0) 2023.12.18
MyBatis  (0) 2023.12.12
Validation  (0) 2023.12.06