본문 바로가기

내일배움캠프/Today I Learned

[TIL] 나의 마흔 세번째 회고록

혼자서 만들어 보는 Blog 


프로젝트 했던 내용을

처음부터 혼자 완성해보려고 한다!

 

우선 Entity @(어노테이션)부터

몰랐거나 헷갈렸던 @(어노테이션)들을

천천히 정리해가면서 리뷰 gogo

 

@Entity(name="USERS")
@Getter
@NoArgsConstructor
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String password;

    @Column(nullable = false)
    private String username;

    @Column(nullable = false)
    @Enumerated(EnumType.STRING)
    private UserEnum role;
}

 

@NoArgsConstructor vs @RequiredArgsConstructor

 

(1) @NoArgsConstructor

기본생성자를 생성해주는 어노테이션으로

초기값 세팅이 필요한 final변수가 있을 경우 컴파일 에러가 발생하기 때문에 주의해야한다. 

@NoargsConstructor(force=true)를 사용하게되면 null, 0등 기본 값으로 초기화 된다. 

 

(2) @RequiredArgsConstructor

final변수, Notnull 표시가 된 변수처럼 필수적인 정보를 세팅하는 생성자를 만들어준다.

 

 

 

@Enumrated

EnumType.STRING vs EnumType.ORDINAL

 

(1) EnumType.STRING 

각 Enum 이름을 컬럼에 저장한다. 

 

(2) EnumType.ORDINAL

각 Enum에 대응되는 순서를 컬럼에 저장한다.

 

 

@GenerratedValue

★ 기본키를 자동으로 생성할 때에는

@Id@GenerratedValue이 함께 사용되어야 한다. 

 

 

※ 기본키 제약조건 

1. null이면 안된다   /  2. 유일하게 식별할 수 있어야한다  / 3.변하지 않는 값이어야 한다.

 

 

(1) IDENTITY - @GeneratedValue(strategy = GenerationType.IDENTITY)

기본키 생성을 데이터베이스에게 위임하는 방식으로 id값을 따로 할당하지 않아도 데이터베이스가 자동으로 AUTO_INCREMENT를 하여 기본키를 생성해준다.

 

(2)SEQUENCE - @GeneratedValue(strategy = GenerationType.SEQUNCE)

데이터 베이스의 Sequence Object를 사용하여 데이터베이스가 자동으로 기본키를 생성해준다.

@SequenceGenerator 어노테이션이 필요하다.

 

(3) TABLE - @GeneratedValue(strategy = GenerationType.TABLE)

키를 생성하는 테이블을 사용하는 방법으로 Sequence와 유사하다.

@TableGenerator 어노테이션이 필요하다

 

(4) AUTO - @GeneratedValue(strategy = GenerationType.AUTO)

기본 설정 값으로 각 데이터베이스에 따라 기본키를 자동으로 생성한다.

 

 

@출처 : https://velog.io/@gudnr1451/GeneratedValue-%EC%A0%95%EB%A6%AC

 

@GeneratedValue 전략

직접 기본키를 생성하는 방법 @Id 어노테이션 만을 사용하여 기본키를 직접 할당해주는 방법이 있다. 기본키를 자동으로 생성하는 방법 4가지 > 기본키를 자동으로 생성할 때에는 @Id와 @GenerratedVa

velog.io