Spring JPA 관련 Annotation 및 설명

2025. 1. 27. 18:01·BackEnd
반응형

@MappedSuperclass

  • 객체의 입장에서 공통 매핑 정보가 필요할 때 사용
  • 부모 클래스에 선언하고 속성만 상속받아서 사용하고 싶을 때 사용

[예제] 

  • Product 에서 BaseEntity를 상속받아서 사용
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseEntity {

    @CreatedDate
    private LocalDateTime createDateTime;

    @LastModifiedDate
    private LocalDateTime modifiedDateTime;
}
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Entity
public class Product extends BaseEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
}

@RequiredArgsConstructor

  • 초기화되지 않은 final 필드나, @NotNull이 붙은 필드에 대해 생성자를 생성

[예제]

@Transactional
@RequiredArgsConstructor
@Service
public class OrderService {

    private final ProductRepository productRepository;
    private final OrderRepository orderRepository;
    private final StockRepository stockRepository;
}
  • @RequiredArgsConstructor을 쓰면 다음과 같아진다.
@Transactional
@Service
public class OrderService {

    private final ProductRepository productRepository;
    private final OrderRepository orderRepository;
    private final StockRepository stockRepository;

    public OrderService(ProductRepository productRepository, OrderRepository orderRepository, StockRepository stockRepository) {
        this.productRepository = productRepository;
        this.orderRepository = orderRepository;
        this.stockRepository = stockRepository;
    }
}

@NoArgsConstructor

  • 파라미터가 없는 디폴트 생성자를 자동으로 생성

[예제]

@NoArgsConstructor
public class Product {

    private String productNumber;
    private int quantity;
}
  • @NoArgsConstructor을 쓰면 다음과 같아진다.
public class Product {

    private String productNumber;
    private int quantity;
    
    public Product() {}
}

@AllArgsConstructor

  • 클래스의 모든 필드 값을 파라미터로 받는 생성자를 자동으로 생성

[예제]

@AllArgsConstructor
public class Product {

    private String productNumber;
    private int quantity;
}
  • @AllArgsConstructor을 쓰면 다음과 같아진다.
public class Product {
    private String productNumber;
    private int quantity;
    
    public Product(String productNumber, int quantity) {
    	this.productNumber = productNumber;
        this.quantity = quantity;
    }
}

 

반응형

'BackEnd' 카테고리의 다른 글

Swagger 기본 설정 및 Nginx 설정  (0) 2025.04.30
HTTPS 요청 시 SSL 인증서 오류 무시  (0) 2025.03.27
'BackEnd' 카테고리의 다른 글
  • Swagger 기본 설정 및 Nginx 설정
  • HTTPS 요청 시 SSL 인증서 오류 무시
CodeCaptain
CodeCaptain
BackEnd Developer code-0dyssey 님의 블로그 입니다.
  • CodeCaptain
    Code Odyssey
    CodeCaptain
  • 전체
    오늘
    어제
    • All (18)
      • BackEnd (3)
      • FrontEnd (0)
      • DB (0)
      • DevOps (1)
      • Algorithm (12)
        • Baekjoon (12)
      • CS (0)
      • ETC (2)
        • 회고 (1)
        • 책 (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.1
CodeCaptain
Spring JPA 관련 Annotation 및 설명
상단으로

티스토리툴바