Spring Annotation(ch2)

권성현·2022년 12월 1일
0

Spring

목록 보기
5/15

**Spring에서 사용하는 많은 Annotation에 대하여 정리

  • @Entity : JPA에서 엔티티란 쉽게 생각하면, DB 테이블에 대 응 하는 하나의 클래스라고 생각할 수 있습니다.
    @Entity가 붙은 클래스는 JPA가 관리해주며,
    JPA를 사용해서 DB 테이블과 매핑할 클래스는 @Entity를 꼭 붙여야만 매핑이 가능합니다.

    @AllArgsConstructor : 해당 객체 내에 있는 모든 변수들을 인수로 받는 생성자를 만들어내는 어노테이션이다. 하지만 이 어노테이션을 사용하기보다는 build 패턴을 사용하던가 정적 팩토리 메소드를 사용하는 것이 코드 가동성에 더 좋다.

    @RequiredArgsConstructor:Lombok으로 스프링에서 DI(의존성 주입)의 방법 중에 생성자 주입을 임의의 코드없이 자동으로 설정해주는 어노테이션이다.
    @RequiredArgsConstructor는 초기화 되지않은 final 필드나, @NonNull 이 붙은 필드에 대해 생성자를 생성해 줍니다.
    새로운 필드를 추가할 때 다시 생성자를 만들어서 관리해야하는 번거로움을 없애준다. (@Autowired를 사용하지 않고 의존성 주입)
    클래스에 선언된 final 변수들, 필드들을 매개변수로 하는 생성자를 자동으로 생성해주는 어노테이션입니다.

    @NoArgsConstructor:제일 기본인 생성자 어노테이션이다. 아무 인수가 없는 생성자를 생성해준다.

  • @Id:데이터베이스 테이블의 기본 키(PK)와 객체의 필드를 매핑시켜주는 어노테이션입니다.

  • @GeneratedValue (strategy = GenerationType.AUTO) :
    Id와 한 세트기본 키를 직접 할당하는 대신 데이터베이스가 생성해주는 값을 사용하려면 @GeneratedValue를 사용해주면 됩니다.(.AUTO는 자동생성)

  • @RestController:@Controller에 @ResponseBody가 결합된 어노테이션입니다. @ResponseBody 리턴 타입이 HTTP의 응답 메시지로 전송. 컨트롤러 클래스에 @RestController를 붙이면,
    컨트롤러 클래스 하위 메서드에 @ResponseBody 어노테이션을 붙이지 않아도 문자열과 JSON 등을 전송할 수 있습니다.

  • @MappedSuperclass:객체의 입장에서 공통 매핑 정보가 필요할 때 사용한다.
    id, name은 객체의 입장에서 볼 때 계속 나온다.
    이렇게 공통 매핑 정보가 필요할 때, 부모 클래스에 선언하고 속성만 상속 받아서 사용하고 싶을 때 @MappedSuperclass를 사용한다.
    DB 테이블과는 상관없다. DB는 매핑 정보 다 따로 쓰고 있다. 객체의 입장이다.

  • @EntityListeners:EntityListeners = Entity가 삽입, 삭제 수정, 조회 등의 작업을 할 때 전, 후에 어떤 작업을 하기 위해
    이번트 처리를 위한 어노테이션이다.
    JPA Auditing을 사용하면 생성 시간과 수정 시간을 자동화 할 수 있다.

  • @CreatedDate:데이터 저장 시 '생성된 시간 정보'

  • @LastModifiedDate:데이터 저장 시 '수정된 시간 정보'

  • LocalDateTime = 날짜와 시간 정보 모두가 필요할 때 사용.
    (Annotation아님)

profile
개발일지

0개의 댓글