데이터베이스에 쓰일 필드와 여러 엔티티간 연관관계를 정의한다. 데이터베이스는 엑셀처럼 2차원 테이블이라고 생각하면 되는데, 이 테이블에 서비스에서 필요한 정보를 다 저장하고 활용하게 된다.
필드라는 것은 엔티티의 각 Column을 의미한다. @로 시작되는 구문은 어노테이션 이라고 부르는데, 대부분은 엔티티와 데이터베이스를 매핑하는 JPA에서 사용되는 것이다
@Entity : 클래스 위에 선언하여 이 클래스가 엔티티임을 알려준다. JPA에서 정의된 필드들을 바탕으로 데이터베이스에 테이블을 만들어준다.
@AllArgsConstructor : 선언된 모든 필드를 파라미터로 갖는 생성자를 자동으로 만들어준다.
@NoArgsConstructor : 파라미터가 아예없는 기본생성자를 자동으로 만들어준다.
@Getter : 각 필드값을 조회할 수 있는 getter를 자동으로 생성해준다. 예를들어 다른 파일에서 Board 객체의 title값을 얻고 싶다면 getTitle() 메서드를 정의해서 해당 객체의 title값을 얻어오게 되는데, 해당 메서드를 굳이 작성하지 않아도 자동으로 생성해주는 것이다.
@ToString : 해당 클래스에 선언된 필드들을 모두 출력할 수 있는 toString 메서드를 자동으로 생성할 수 있도록 해준다.
@Id, @GeneratedValue : 해당 엔티티의 주요 키(Primary Key, PK)가 될 값을 지정해주는 것이 @Id 이다. @GeneratedValue는 이 PK가 자동으로 1씩 증가하는 형태로 생성될지 등을 결정해주는 어노테이션이다.