
JPA를 사용하려면 해당 어노테이션 사용, 클래스에 선언하면 그 클래스는 JPA가 관리한다. 그러므로 DB의 테이블과 Class(VO, DTO)와 맵핑한다면 반드시 @Entity를 붙여주어야 한다.
@Entity가 붙은 클래스에는 다음 제약사항이 필요하다.
@Entity의 속성 :
name > 엔티티 이름을 지정한다. 기본값으로 클래스 이름을 그대로 사용한다.
Member Entity를 분석한다.
INSERT SQL을 생성한다.
JDBC API를 사용하여 SQL을 DB에 날린다.
객체 필드와 DB 테이블 컬럼을 맵핑한다.
@Column의 속성 :
DB 테이블의 column 과 같은 이름의 private 변수를 가지고, getter setter 메소드를 정의 한 후 toString 메소드를 정의한다. 프로젝트가 커지면 커질수록 위에 말한 변수 , 메소드들이 기하급수적으로 늘어날 것이고, 늘어나면 늘어날 수록 추가도 관리도 힘들어져 결국에는 유지보수가 힘들어진다. 위의 문제를 해결한 것이 Lombok이다.
@ToString : toString() 메소드 생성. @ToString(exclude={“제외값”})으로 제외 할 값을 설정할 수 있다.
@Getter , @Setter : getter() setter() 메소드를 생성한다.
@EqualsAndHashCode : equals(), hashCode() 메소드를 생성한다.
@RequiredArgsConstructor : 모든 멤버 변수를 초기화시키는 생성자를 생성한다.
@Data : 위에 언급한 5가지 어노테이션 설정을 모두 포함한다.
@NorgsConstructor : 파라미터가 없는 기본 생성자 생성
@AllArgsConstructor : 모든 필드 값을 파라미터로 받는 생성자를 만들어 준다.
@RequiredArgsConstructor : final이나 @NonNull 인 필드 값만 파라미터로 받는 생성자를 만들어 준다.
@EqualsAndHashCode : equals, hashCode 자동 생성
equals : 두 객체의 내용이 같은지, 동등성(equality) 를 비교하는 연산자.
hashCode : 두 객체가 같은 객체인지, 동일성(identity) 를 비교하는 연산자
@Table : 맵핑할 테이블을 지정한다.
@Table의 속성 :
객체 - 테이블 맵핑 : @Entity, @Table
필드 - 컬럼의 팹핑 : @Column
기본키의 맵핑 : @Id
조인 맵핑 : @ManyToOne, @JoinColumn
