어노테이션 정리

임재현·2024년 4월 1일
0

1. Spring

@Bean

@Autowired

의존 객체의 타입에 해당하는 Bean을 찾아준다.

@RestController

Rest 세션리스
요청에 대한 응답 이후 서버에 클라이언트 정보를 가지지 않음
리로스만 리턴하는 컨트롤러를 위한 어노테이션
페이지 컨트롤러가 아님

@RequestMapping

localhost:8080 이후에 오는 주소에 대한 컨트롤러 임을 명시해줌
ex) localhost:8080/apis/hello 일 경우 apis에 대한 컨트롤러를 명시해주고 싶다 하면
	@RequestMapping("/apis")

@GetMapping

위의 예시 사용 > apis이후에 오는 주소에 대한 세부 매핑에 대해 명시
ex) @GetMapping("/hello")

@PathVariable

주소에 변수를 담는다!
@GetMapping으로 /path/{name}/100/{age} 라고 올 경우
name과 age가 PathVariable이다.
path에 변수가 오는 것
public String checkName(
	@PathVariable String name,
    @PathVariable int age
)
처럼 값을 직접 받음

@RequestParam

? 기호 뒤로 파라미터를 담아서 요청하는 것
@PathVariable이 많을 경우 HashMap 형태로 받기 위해 
public String loginAll(@RequestParam Map<String, String> params) 로 선언
이후 params 사용 방법은 구글링

어노테이션 관련은 아니지만 이러한 파라미터 매핑을 하기 귀찮으면 
dto 패키지를 만들어 lombok @Data 사용해 처리한다.

@Value

중요한 api id, pw 같은 것들은 yml파일에 정의하고
끌어 가져와서 사용하기 위함

@Configuration

spring이 시작되면서 @configuration이 달려있는 곳을 설정파일로 인식한다

2. Lombok

@Data

@Getter, @Setter 등 필요한거 한방에 해결

@Builder

객체 생성을 점진적으로 도와준다
자세한건 아래 링크

https://berrrrr.github.io/programming/2020/01/27/lombok-data-builder/

@RequiredArgsConstructor

final이나 @NonNull으로 선언된 필드만을 파라미터로 받는 생성자 생성

@NoArgsConstructor

파라미터가 없는 디폴트 생성자를 생성

@AllArgsConstructor

모든 필드 값을 파라미터로 받는 생성자를 생성

@Slf4j

log를 찍기 위해 사용

3. JPA

@OneToMany

1:N 관계 명시
@OneToMany(mappedBy = "user")
ManyToOne에서 참조하고있는 변수 명 맵핑
OneToMany는 fetch = FetchType.LAZY 가 default 이다
-> 나는 유저 한명의 이메일이 궁금한데 
   해당 유저의 코멘트 5000건이 딸려와서는 곤란하기 때문에 default로 되어 있는 듯
   또한 해당 유저의 코멘트를 같이 보고 싶을 때
   OneToMany 쌍방관계를 형성하면 가능하다

@JoinColumn

외래키 이름 지정
@Table의 name값과 동일한 원리
@JoinColumn(name = "user_t_idx")//외래키 이름지정

@ManyToOne

N:1 관계 명시
@ManyToOne(fetch = FetchType.LAZY, optional = false)
LAZY : user를 호출하기 전까지 쿼리를 보내지 않음(권고 사항)
EAGER : 리뷰 엔티티가 저장될 때 유저가 있어야 한다
optional : pk key가 있어도 되고 없어도 되는가? t/f

N:1 관계로 매핑을 할 때 1로 매핑되는 곳에도 @OneToMany를 해줘야 나중에 One쪽에서 정보를 출력할 때 그에 해당하는 Many의 내용도 출력 할 수 있다.

@Column

컬럼 데이터 명시
@Column(updatable = false, nullable = false)

@Id

PK Key명시

@GeneratedValue

Auto-Increment 기능
strategy = GenerationType.IDENTITY  MYSQL에서 사용
MariaDB는 SEQUENCE

@Entity

- JPA가 관리하도록 표시해주는 역할
- 테이블과 매핑

0개의 댓글