2.1 주석 @Entity, @Table

클래스를 데이터베이스의 테이블에 매핑하려면 이를 위해 최대 3개의 주석을 추가해야 합니다.

먼저 클래스에 주석을 추가해야 합니다 @Entity. 클래스 앞의 이 주석은 Hibernate에게 이것이 단순한 클래스가 아니라 객체가 데이터베이스에 저장되어야 하는 특별한 클래스임을 알려줄 것입니다.

예:

@Entity
class User {
    public int id;
    public String name;
    public int level;
    public Date createdDate;
}

이것은 Hibernate가 이 클래스의 객체를 특별한 방식으로 다루기에 충분합니다.

두 번째 주석은 입니다 @Table. 도움을 받아 이 클래스가 연결될 데이터베이스의 테이블 이름을 설정할 수 있습니다. 예:

@Entity
@Table(name="user")
class User {
    public int id;
    public String name;
    public int level;
    public Date createdDate;
}

클래스 이름과 테이블 이름이 같으면 주석을 @Table생략할 수 있습니다.

또한 애플리케이션이 동시에 여러 스키마의 테이블로 작업하는 경우 테이블이 있는 특정 스키마를 지정해야 합니다.

@Entity
@Table(name="user", schema="test")
class User {
    public int id;
    public String name;
    public int level;
    public Date createdDate;
}

예, 모든 것이 보이는 것처럼 간단합니다.

2.2 @Column 주석

두 번째로 알아야 할 중요한 사항은 테이블 열을 클래스 필드에 매핑하는 것입니다. 가장 간단한 버전에서 Hibernate는 단순히 엔티티 클래스의 필드를 원하는 테이블의 열에 매핑합니다.

매핑의 모든 뉘앙스를 제어하려면 주석을 사용할 수 있습니다 @Column. 예:

@Entity
@Table(name="user")
class User {
   @Column(name="id")
   public Integer id;

   @Column(name="name")
   public String name;

   @Column(name="level")
   public Integer level;

   @Column(name="created_date")
   public Date createdDate;
}

주석 @Column에는 다양한 매개 변수가 있으며 아래에서 가장 많이 사용되는 매개 변수를 고려할 것입니다.

# 속성 이름 속성 유형 설명
1 이름 클래스 필드의 테이블 열 이름을 설정합니다.
2 고유한 부울 모든 필드 값은 고유해야 합니다.
nullable 부울 필드는 null일 수 있습니다.
4 길이 정수 최대 길이(문자열용)

User Entity 클래스의 필드에 몇 가지 제약 조건을 추가해 보겠습니다.

  • 사용자 이름은 고유해야 하며 100자 이하여야 합니다.
  • 레벨은 null일 수 있습니다.
  • createdDate는 null일 수 없습니다.

그런 다음 주석은 다음과 같이 됩니다.

@Entity
@Table(name="user")
class User {
   @Column(name="id")
    public Integer id;

   @Column(name="name", unique=true, length=100)
   public String name;

   @Column(name="level", nullable=true)
   public Integer level;

   @Column(name="created_date", nullable=false)
   public Date createdDate;
}

User 유형의 객체를 생성 하고 여기에 모든 null 필드 를 할당할 수도 있지만 데이터베이스에 저장하려고 하면 Hibernate가 검사를 수행하고 제한 사항을 위반하면 예외가 발생합니다.

2.3 @Id 주석

그리고 또 하나의 중요한 주석은 @Id. 테이블의 기본 키를 설정하는 데 사용할 수 있습니다 .

원하는 필드에 대해 이 주석을 지정하기만 하면 Hibernate가 모든 작업을 자체적으로 수행합니다.

@Entity
@Table(name="user")
class User {
   @Id
   @Column(name="id")
   public Integer id;

   @Column(name="name")
   public String name;

   @Column(name="level")
   public Integer level;

   @Column(name="created_date")
   public Date createdDate;
}

데이터베이스에 개체를 추가할 때 개체의 ID를 Hibernate가 독립적으로 생성하도록 하려면 주석을 하나 더 추가해야 합니다 @GeneratedValue. 그러면 우리의 예는 다음과 같을 것입니다.

@Entity
@Table(name="user")
class User {
   @Id
   @GeneratedValue
   public Integer id;

   @Column(name="name")
   public String name;

   @Column(name="level")
   public Integer level;

   @Column(name="created_date")
   public Date createdDate;
}

여기서는 id@Column 필드 에 대한 주석을 생략했습니다 . 중요한 정보를 전달하지 않기 때문입니다. 테이블의 필드 이름과 열 이름은 동일하며 나머지 주석 덕분에 Hibernate는 이미 우리가 테이블에 대해 이야기하고 있음을 이해합니다. 열.