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는 이미 우리가 테이블에 대해 이야기하고 있음을 이해합니다. 열.
GO TO FULL VERSION