profile image

L o a d i n g . . .

@Getter

  • Getter 메소드 생성
  • Setter는 되도록 사용 X -> 데이터가 변경되어 어느 지점에서 변경되는지 추적하기 힘듦
  • 엔티티를 변경해야 할 일이 있으면 비즈니스 메소드 만들어서 사용하기

@Entity

  • JPA를 사용해서 테이블과 매핑할 클래스는 해당 어노테이션 사용 필수
  • 엔티티와 테이블명 다르게 하고싶을 때는 @Table

@Builder

  • 빌더 패턴 자동으로 생성
  • builder(): 빌더 클래스의 인스턴스 생성
  • build(): 실제 생성자 호출하여 객체 생성
  • 빌더 패턴은 생성자에 인자가 많을 때 사용하면 편함

@DynamicUpdate

  • 실제 값이 변경된 컬럼으로만 UPDATE 쿼리를 만듦

@AllArgsConstructor

  • 클레스의 모든 필드에 대한 생성자를 자동으로 만듦
  • @Builder와 @NoArgsContructor를 함께 사용할 때, 모든 매개 변수를 받는 생성자가 없으면 에러 발생

@NoArgsConstructor(access = AccessLevel.PROTECTED)

  • 매개변수 없는 기본 생성자를 자동으로 생성
  • 접근 제어 수준을 protected로 설정
  • @Entity 적용 시 기본 생성자는 필수이므로 롬복에서 제공하는 해당 어노테이션 사용하기

@Id

  • 기본키를 직접 할당할 필드에 적용

@GeneratedValue(Strategy = GenerationType.AUTO)

  • 엔티티 클래스의 기본 키(Primary Key) 필드에 대해 자동으로 값 생성하는 전략
  • JPA는 해당 엔티티의 키 생성을 데이터베이스에 위임함

@Column

  • 필드와 컬럼 매핑

@ManyToOne(fetch = FetchType.LAZY)

  • 다 : 1
  • 실무에서 모든 연관관계는 지연로딩 LAZY로 설정해야 함
  • @XToOne 관계는 default가 즉시 로딩(EAGER)이므로 직접 지연 로딩(LAZY)로 설정해야 함
  • 즉시 로딩은 예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어렵고, N+1 문제가 자주 발생하기 때문

@JoinColumn

  • 외래키 매핑시 사용

@Enumerated(EnumType.STRING)

  • Enum 값을 String으로 저장하고 싶을 때 사용
  • 이 어노테이션을 붙이지 않으면 정수가 저장 됨 (0, 1, 2, ...)

출처

1. https://nyximos.tistory.com/93

복사했습니다!