@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, ...)
출처
'TIL > Java' 카테고리의 다른 글
[TIL/Java] 학생 수 입력받고 점수 등록하기 (if-else을 switch문으로 리팩토링) (0) | 2024.08.13 |
---|---|
[TIL/Java] 배열 항목에서 최대값 출력하기 (for문 이용) (0) | 2024.08.12 |
[TIL/Java] 컴파일러란? (0) | 2024.08.07 |
[TIL/Java] JPA - ddl-auto 주의점 (0) | 2023.11.14 |
[TIL/Java] Mooc.fi - Part 4 Introduction to object-oriented programming (Room까지 함) (0) | 2023.11.11 |