[Spring]애노테이션

쓰옹·2022년 12월 8일
0

@RestController

  • @Controller@ResponseBody 가 추가된 것
  • 컨트롤러 클래스의 각 메서드마다 @ResponseBody를 따로 추가할 필요 없음

@RequiredArgsConstructor

  • Lombock 라이브러리
  • 생성자 주입 방법
  • final 이 붙거나 @NotNull이 붙은 필드의 생성자를 자동 생성

@Id

  • 데이터베이스 테이블의 기본키(PK)와 객체의 필드를 매핑시켜줌
  • 적용 가능 타입
    • 자바 기본형 (int, long, ...)
    • 자바 래퍼형 (Integer, Long, ...)
    • String
    • Date (java.util)
    • Date (java.sql)
    • BigDecimal
    • BigInteger
  • @GeneratedValue
    • 기본키의 값을 자동으로 생성하는 전략 명시
    • GenerationType
            public enum GenerationType { 
            
                /**
                 * Indicates that the persistence provider must assign 
                 * primary keys for the entity using an underlying 
                 * database table to ensure uniqueness.
                 */
                TABLE, 
            
                /**
                 * Indicates that the persistence provider must assign 
                 * primary keys for the entity using a database sequence.
                 */
                SEQUENCE, 
            
                /**
                 * Indicates that the persistence provider must assign 
                 * primary keys for the entity using a database identity column.
                 */
                IDENTITY,
            
                /**
                 * Indicates that the persistence provider must assign
                 * primary keys for the entity by generating an RFC 4122
                 * Universally Unique IDentifier.
                 */
                UUID,
            
                /**
                 * Indicates that the persistence provider should pick an 
                 * appropriate strategy for the particular database. The 
                 * <code>AUTO</code> generation strategy may expect a database 
                 * resource to exist, or it may attempt to create one. A vendor 
                 * may provide documentation on how to create such resources 
                 * in the event that it does not support schema generation 
                 * or cannot create the schema resource at runtime.
                 */
                AUTO
            }
  • @GeneratedValue(strategy = GenerationType.AUTO)
    • JPA구현체가 Data Type을 기준으로 자동으로 생성 전략 결정

JpaAuditing

@Getter
@MappedSuperclass 
//JAP Entity 클래스들이 해당 클래스를 상속하면 생성시간, 수정시간도 컬럼으로 인식
@EntityListeners(AuditingEntityListener.class)
//해당 클래스에 Auditing 기능 포함 
//엔티티를 db에 적용하기 전,후에 커스텀 콜백을 요청, 요청할 클래스 인자로 지정
public class Timestamped {

    @CreatedDate //생성시간 저장
    private LocalDateTime createdAt;

    @LastModifiedDate // 수정시간 저장
    private LocalDateTime modifiedAt;
}

@EnableJpaAuditing

- JPA auditing 애노테이션 활성화
    
    Spring Data JPA에서 시간에 대해서 자동으로 값을 데이터베이스 테이블에 넣어주는 기능
    

@Transactional

  • DB와 관련해서 트랜잭션이 필요한 서비스 클래스 또는 메서드에 사용
  • 사용한 메서드가 포함하고 있는 작업 중 하나라도 실패할 경우 전체 작업을 취소함
  • Transaction
    • 모든 작업들이 성공적으로 완료되어야 작업 묶음의 결과를 적용하고, 어떤 작업에서 오류가 발생했을 때는 이전에 있던 모든 작업들이 성공적이었더라도 없었던 일처럼 완전히 되돌리는 것
    • 데이터베이스를 다룰 때 작업 중 오류가 발생하면 모든 작업들을 원상태로 되돌릴 수 있다. 모든 작업들이 성공해야만 최종적으로 데이터베이스에 반영하도록 한다.

@JsonIgnore

  • 특정 데이터는 응답 데이터에서 제외시킬 수 있습니다.

@PathVariable

  • URL 경로에 변수 넣어줌

    @GetMapping("/blog/{id}")
                       ----- 요것
  • @PathVariable Long id : PathVariable 방식으로 id값을 가져옴




reference

https://ttl-blog.tistory.com/123

https://velog.io/@developerjun0615/Spring-RequiredArgsConstructor-어노테이션을-사용한-생성자-주입

@Id / @GeneratedValue에 대해 알아보자

[Spring] Spring Data JPA에서 Auditing 사용하는 법

Transactional 어노테이션

profile
기록하자기록해!

0개의 댓글