본문 바로가기

포트폴리오 만들기/spring boot, jpa emo 기록하기

10일차

반응형

- 공통메뉴 만들기

- EmotionEntity 메뉴 완성하기 

@RestController
public class PostController {

    private final PostService postService;

	@GetMapping("/community")
    public String communityList(Model model) {
        List<Post> postList = postService.getAllPosts();

        model.addAttribute("activePage", "community");
        model.addAttribute("postList", postList);
        return "community";
    }
}

 

=> 이렇게 하면 빈화면에 community만 뜨고 페이지 이동을 하지 않는다. 

✅ @Controller vs @RestController 차이 핵심 요약

어노테이션언제 사용?반환값은?주로 쓰는 곳
@Controller HTML 페이지를 리턴할 때 Thymeleaf 등의 템플릿 이름 웹 애플리케이션 (뷰 있는 화면)
@RestController JSON 데이터를 리턴할 때 문자열, 객체 → JSON API 서버, 프론트엔드와 분리된 백엔드

🧠 개념 정리

🔹 @Controller

  • Spring MVC 전통적인 웹 컨트롤러
  • 리턴값은 보통 HTML 파일 이름 ("home", "community")
  • Thymeleaf 같은 템플릿 엔진이 렌더링함

🔹 @RestController

  • @Controller + @ResponseBody 를 합친 것!
  • 리턴값은 JSON, 문자열 그대로 클라이언트에 전달됨
  • Vue, React 같은 SPA 프론트엔드와 연동할 때 자주 씀

📌 실무 팁

  • Thymeleaf 기반 웹 앱 → @Controller
  • 모바일 앱 / Vue / React 프론트 연결하는 백엔드 API → @RestController

🎯 결론

| 너처럼 화면에 메뉴랑 페이지 나오게 하려면? 👉 @Controller
| JSON 응답을 주는 API 만들고 싶으면? 👉 @RestController

 


 

- Emotion Entity 완성하기

 

EmotionEntry.java 설명

@PrePersist
public void onCreate() {
    this.createdAt = LocalDateTime.now();
}

이거는 JPA가 실제로 insert 하기 전에 자동으로 createdAt을 채워주는 방식인데,
조건이 있어!!

EntityManager가 관리하는 Entity여야만 @PrePersist가 실행됨
즉, EmotionEntry를 new로 만들었는데 뭔가 프록시 객체로 안 인식되면 무시될 수도 있음.

 

 

- Emotion calendar 완성하기

 : 감정기록을 JSON으로 바꾸는 API 작업을 왜 하는가? ✅ FullCalendar가 JSON 데이터(이벤트 형식) 를 필요로 하기 때문.

 

🎯 그래서 우리가 하려는 건?

1. EmotionEntry 테이블에 저장된 데이터를

2. FullCalendar가 인식할 수 있는 JSON 형식으로 바꿔서

3. /api/emotions 같은 경로로 내려주기

 

✨ 이렇게 바꿔주면 됨:

const res = await fetch('/api/emotion-entries');

👉 /api/emotion-entries ✅ ← 이게 emotion_entry 테이블에서 감정 데이터를 JSON으로 내려주는 API!

👉 EmotionEntryApiController 만들기

 

- 감정 등록 수정 완

반응형

'포트폴리오 만들기 > spring boot, jpa emo 기록하기' 카테고리의 다른 글

12일차  (0) 2025.04.23
11일차 메뉴 및 UI 수정, 게시글 수정 및 삭제  (0) 2025.04.23
7, 8, 9일차  (0) 2025.04.20
6일차  (0) 2025.04.19
4, 5일차  (1) 2025.04.19