1️⃣ 요구사항 정리
- 유저를 생성, 조회, 수정, 삭제할 수 있습니다.
- 유저는 아래와 같은 필드를 가집니다.
- 유저명, 이메일, 작성일 , 수정일 필드
- 작성일, 수정일 필드는 JPA Auditing을 활용합니다.
- 일정은 이제 작성 유저명 필드 대신 유저 고유 식별자 필드를 가집니다.
2️⃣ API 명세
| Method | URL | 설명 |
| POST | /authors/signup | 작성자 등록 |
| GET | /authors/{authorId} | 작성자 조회 |
| PATCH | /authors/{authorId} | 작성자 수정 |
| DELETE | /authors/{authorId} | 작성자 삭제 |
3️⃣ ERD

4️⃣ 주요 코드(작성자 조회)
더보기
(AuthorController.java)
@RestController
@RequestMapping("/authors")
@RequiredArgsConstructor
public class AuthorController {
@GetMapping("/{authorId}")
public ResponseEntity<AuthorResponseDto> findAllAuthor(@PathVariable Long authorId) {
AuthorResponseDto author = authorService.findByauthorId(authorId);
return new ResponseEntity<>(author, HttpStatus.OK);
}
}
(AuthorService.java)
@Override
public AuthorResponseDto findByauthorId(Long authorId) {
Author author = authorRepository.findByIdOrElseThrow(authorId);
return new AuthorResponseDto(author.getLoginId(), author.getName(), author.getUpdatedDate());
}
(AuthorRepository.java)
public interface AuthorRepository extends JpaRepository<Author, Long> {
Optional<Author> findByLoginId(String loginId);
default Author findByLoginIdOrElseThrow(String loginId){
return findByLoginId(loginId).orElseThrow(() -> new CustomException(ExceptionCode.AUTHOR_ID_MISMATCH));
};
default Author findByIdOrElseThrow(Long authorId) {
return findById(authorId).orElseThrow(() -> new CustomException(ExceptionCode.AUTHOR_NOT_FOUND));
}
}
(Author.java)
@Getter
@Entity
@Table(name = "author")
public class Author extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long authorId;
@Column(name = "login_id", unique = true)
private String loginId;
private String name;
private String password;
public Author() {
}
}
(AuthorResponseDto.java)
@Getter
@AllArgsConstructor
public class AuthorResponseDto {
private final String loginId;
private final String name;
private final LocalDateTime updatedDate;
}
📌 GitHub 저장소: https://github.com/sukh115/schedulerJpa/lv2
GitHub - sukh115/schedulerJpa
Contribute to sukh115/schedulerJpa development by creating an account on GitHub.
github.com
'SPRING' 카테고리의 다른 글
| [Spring Boot + JPA] LV.5+ Lv.6 (1) | 2025.03.28 |
|---|---|
| [Spring Boot + JPA] LV.3 + LV.4 (1) | 2025.03.28 |
| SPRING[Spring Boot + JPA] LV.1 (1) | 2025.03.28 |
| [Spring Boot + JPA] 트러블 슈팅 (2) | 2025.03.28 |
| Spring JPA 영속성 컨텍스트 (0) | 2025.03.26 |