@Controller
@Service
@Repository
: Spring Boot에서는 @EnableJpaRepositories가 자동 설정되어있어, JpaRepository를 상속받을 때 어노테이션을 지정해주지 않아도 자동으로 빈에 등록됩니다.@RestController
@Entity
@RequestMapping
: 요청을 매핑시켜줍니다.@GetMapping
@PostMapping
@DeleteMapping
@PutMapping
: 전체 리소스 수정에 사용합니다.@PatchMapping
: 일부 리소스만 수정할 때 사용합니다.@RequestParam
: 1개씩 파라미터가 바인딩됩니다. URL에서 데이터를 받아옵니다. 요청의 Body부분을 조회하지는 않습니다.@ModelAttribute
: 파라미터값이나 form-data를 받아올 때 사용합니다. 받아오는 객체에 Setter가 있어야 합니다. 자동으로 model에 넣어집니다.@RequestBody
: 요청의 Body에 있는 JSON 데이터를 받아올 때 사용합니다. JSON타입을 JAVA객체로 변환해줍니다. Setter가 필요없습니다.@PathVariable
@CreatedDate
: 생성일자를 자동 매핑@Id
@GeneratedValue
@ManyToOne
: 앞에 꺼가 자신, 뒤에꺼가 참조되는 엔티티(N : 1)@Autowired
: 필드 의존성 주입에 사용, 권장하지 않는 방법입니다.@RequiredArgsConstructor
: 생성자 의존성 주입에 사용, final필드, @NonNull필드에 대해 생성자를 자동으로 생성해줍니다.@NoArgsConstructor
: 기본 생성자를 생성해줍니다. 하지만 다른 생성자가 존재한다면 생성하지 않습니다.@AllArgsConstructor
@Getter
@Setter
@EqualsAndHashCode
@ToString
@Builder
: 생성자들을 자동으로 만들어주dArgsConstructor + ToString + EqualsAndHashCode를 모두 생성해주는 어노테이션입니다.@Data
: Getter + Setter + Require@Log4j2
@Transactional
: 트랜잭션 처리엔티티 클래스의 클린코드(올바른 Lombok 어노테이션 사용법)
https://www.nowwatersblog.com/springboot/springstudy/lombok
UUID vs AUTO_INCREMENT
https://www.bytebase.com/blog/choose-primary-key-uuid-or-auto-increment
Entity에 Setter사용?
https://velog.io/@langoustine/setter%EB%A5%BC-%EC%93%B0%EC%A7%80%EB%A7%90%EB%9D%BC%EA%B3%A0