# Modeling

## 어노태이션

* @Entity : 해당 클래스가 엔티티임을 명시합니다.
* @Table : 클래스의 이름과 테이블의 이름을 다르게 지정해야 할 경우에 사용합니다.
  * name

* @Id : 테이블의 기본키를 지정합니다. 모든 엔티티는 @Id가 필요합니다.
* @GeneratedValue : 일반적으로 @Id와 함께 사용됩니다. 해당 필드의 값을 자동으로 생성하는 방식을 지정합니다.
  * strategy

* @Column : 테이블의 칼럼으로 맵핑됩니다.
  * name : 데이터베이스의 칼럼명을 지정합니다.
  * unique : 고유키로 지정합니다.
  * nullable : 널 처리 가능여부를 지정합니다.
  * insertable
  * updatable
  * columnDefinition
  * table
  * length : 데이터의 최대 길이를 지정합니다.
  * precision
  * scale
* @Transient : 클래스에는 선언되어 있지만, 데이터베이스에는 필요 없는 경우에 지정합니다.



### GenerationType
* AUTO : 사용하는 데이터베이스에 맞게 자동으로 생성합니다.
* IDENTITY : AUTI_INCREMENT를 사용해서, 데이터베이스가 알아서 생성하도록 합니다.
* SEQUENCE : @SequenceGenerator로 지정된 식별자 생성기를 통해서 값을 주입받습니다.
* TABLE : @TableGenerator를 사용해서 별도의 테이블에 값을 저장합니다.