@EntityListeners(AuditingEntityListener.class)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Entity
@EntityListeners(AuditingEntityListener.class)
public class AccountUser {
@Id
@GeneratedValue
private Long id;
private String name;
@CreatedDate
private LocalDateTime createdAt;
@LastModifiedDate
private LocalDateTime updatedAt;
}
엔티티 클래스에 @EntityListeners(AuditingEntityListener.class)를 선언하여 Auditing 기능을 활성화한다.Auditing 기능을 활성화한 엔티티에 @CreatedDate와 @LastModifiedDate 어노테이션을 붙여서 생성일자와 수정일자를 관리할 필드를 지정한다.스프링 프레임워크 설정에서 Auditing 기능을 사용하기 위해 @EnableJpaAuditing 어노테이션을 사용한다.
@Valid
자바의 어노테이션 중 하나로, 주로 데이터 유효성 검사에 사용된다.Spring Framework에서는 @Valid 어노테이션을 주로 사용하여 입력된 데이터의 유효성을 검사한다.
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
public class UserDTO {
@NotBlank(message = "이름은 필수 입력 항목입니다.")
@Size(max = 50, message = "이름은 50자 이하여야 합니다.")
private String name;
@NotBlank(message = "이메일은 필수 입력 항목입니다.")
@Email(message = "유효한 이메일 주소를 입력해주세요.")
private String email;
}
UserDTO 클래스에서 @NotBlank와 @Size 어노테이션은 각각 필드의 값이 비어있지 않고, 최대 길이를 초과하지 않도록 유효성을 검사하는 규칙을 정의한다
@RestController
@Validated
public class UserController {
@PostMapping("/users")
public ResponseEntity<String> createUser(
@Valid @RequestBody UserDTO userDTO) {
}
}
UserController 클래스에서 createUser 메서드에 @Valid 어노테이션을 사용하여 UserDTO 객체의 유효성을 검사한다.
accountUserRepository.findById(userId)
.orElseThrow(() -> new RuntimeException("User Not Found"));
orElseThrow() 메서드는 Optional 클래스의 메서드로서, findById 메서드가 조회 결과를 Optional 객체로 반환한다.Optional을 사용함으로써 null 값으로 인한 예기치 않은 NullPointerException을 방지할 수 있다.orElseThrow() 메서드는 Optional 객체가 비어있을 경우에 예외를 발생시키도록 하는 메서드이다. 여기서는 User Not Found 메시지와 함께 RuntimeException을 발생시킨다.findById 메서드가 Optional 객체를 반환하면서 값이 비어있을 경우,데이터베이스에서 해당 userId에 해당하는 레코드가 없을 경우에 RuntimeException을 발생시킨다.
Optional'<'Account>' findFirstByOrderByIdDesc();
findFirstByOrderByIdDesc() 메서드는 Spring Data JPA의 Query Methods 중 하나로, 데이터베이스에서 Account 엔티티를 조회하는 메서드이다. 해당 메서드는 Account 엔티티 중에서 id 값이 내림차순으로 정렬된 첫 번째 엔티티를 Optional 객체로 반환합니다. 즉, 가장 큰 id 값을 가진 Account 엔티티를 조회하는 것이다.
감사합니다. 이런 정보를 나눠주셔서 좋아요.