Annotation

@t189216·2024년 3월 19일

Spring Boot

목록 보기
5/9

@RequiredArgsConstructor

클래스 내에서 final로 선언된 필드나 @NonNull 어노테이션이 붙은 필드에 대해 생성자를 자동으로 생성합니다. 주로 불변 객체(Immutable Object)를 만들 때 유용하게 사용됩니다.

@AllArgsConstructor

해당 클래스의 모든 필드를 매개변수로 받는 생성자가 자동으로 생성됩니다.

import lombok.*;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class MyDTO {
    private String name;
    private int age;
}

// 자동 생성
public MyDTO(String name, int age) {
    this.name = name;
    this.age = age;
}

@NoArgsConstructor

클래스에 기본 생성자를 생성합니다. DTO에서 JSON 형태의 데이터를 자바 객체로 매핑할 때 유용하게 사용됩니다.

import lombok.*;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class MyDTO {
    private String name;
    private int age;
}

이후에는 이 DTO 클래스의 인스턴스를 매개변수 없이 생성할 수 있습니다.

@RestController

↗️ @Controller와 @RestController 차이

@Entity(name = "ToDo")

@Table(name = "todo")

@RequestParam

@Transactional

이 어노테이션을 메서드나 클래스에 추가하면, 해당 메서드나 클래스의 작업은 하나의 트랜잭션으로 묶이게 됩니다. 즉, 메서드 내에서 실행되는 데이터베이스 작업은 모두 하나의 트랜잭션으로 처리됩니다.

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class MyService {

    private final MyRepository myRepository;

    public MyService(MyRepository myRepository) {
        this.myRepository = myRepository;
    }

    @Transactional
    public void saveData(MyEntity data) {
        myRepository.save(data);
    }
}

위의 코드에서 saveData 메서드에 @Transactional 어노테이션을 추가하면, 이 메서드에서 실행되는 데이터베이스 작업은 하나의 트랜잭션으로 처리됩니다. 따라서 메서드 내에서 myRepository.save(data)가 실행될 때, 이 작업은 트랜잭션 내에서 처리되어 데이터베이스에 저장됩니다. 만약 예외가 발생한다면 트랜잭션이 롤백되어 저장된 데이터가 취소됩니다.

profile
Today I Learned

0개의 댓글