Programming/Spring

[Spring] 스프링부트 Annotation(2)

지윤이글스 2023. 1. 3. 16:59

--JPA Annotaiton 

-jpa 를 사용하면 DB 데이터에 작업할 경우 실제 쿼리를 사용하지 않고 Entity 클래스의 수정을 통해 작업한다. 

 

@Entity

 - 실제 DB 의 table 과 매칭될 class 임을 명시한다. 즉, table 과 링크될 class임을 나타냄.

 

@Table 

- Entity Class 에 mapping 할 table 정보를 알려준다. ex) @Table(name = "Member")

  만약 이 어노테이션을 생략한다면 Class 이름을 테이블 이름 정보로 자동매핑한다. 

 

@Id

- 해당 테이블의 pk field 를 나타낸다. 

 

@GeneratedValue 

- pk의 생성 규칙을 나타냄. 기본값은 AUTO 이고, MySQL 의 auto_increment 와 같이 자동증가하는 정수형 값이 됨.

@GeneratedValue(strategy = GenerationType.AUTO) //기본 키 (PK) 자동생성해주는 어노테이션

@Column 

- Table 의 컬럼을 나타내며, 굳이 선언하지 않더라도 해당 Class 의 필드는 모두 컬럼이 된다. 예) 이름, 나이, 가격 등등

ex) @Column(name = "username") 

@Column 을 사용하는 이유는, 기본값 외에 추가로 변경이 필요한 옵션이 있을 경우 사용. 

 

@Getter

- Class 내의 모든 field 의 Getter method를 자동 생성한다.

 

@Setter

- Class 내의 모든 field 의 Setter method를 자동 생성한다.

-> Controller 에서 @RequestBody 로 외부에서 데이터를 받는 경우엔 기본생성자 + set method 를 통해서만 값이 할당된다. 그래서 이때만 setter를 허용한다.  Entity Class 에는 Setter 를 설정하면안된다. 차라리 DTO 클래스를 생성해서 DTO 타입으로 받도록 하자. 

 

@ToString

 - Class 내 모든 필드의 ToString method 를 자동생성한다.