오늘은 부트캠프 36일차이다. 오늘은 오전에 스프링 과제에 대한 코드 리뷰 강의를 듣고 오후에는 복습을 하였다. @Controller과 @RestController이 강의 나와서 찾아보았고, 객체 간의 연관관계 어노테이션에 대한 부분도 찾아보았다. 내일은 내가 사용하고 있는 어노테이션에 대해 찾아보고 벨로그에 작성하는 것이 적어도 내가 만든 프로젝트에 대해서는 잘알아한다고 생각을 하기 때문에이다. 그래도 복습을 하고 나니 조금씩 조금씩 나아가고 있다고 생각이 든다.
오늘 배운 것
1. 스프링부트 전체적인 흐름
2. @Controller와 @RestController
-Spring에서 컨트롤러를 지정해주기 위한 어노테이션은 @Controller와 @RestController가 있다. 이 둘의 차이점은 HTTP Response Body가 생성되는 방식이다.
2-1 역할
-@Controller의 역할은 Model 객체를 만들어 데이터를 담고 View를 반환하는 것이고, @RestController는 단순히 객체만을 반환하고 객체 데이터는 JSON 또는 XML 형식으로 HTTP 응답에 담아 전송한다.
3. 객체 간의 연관관계 어노테이션
3-1. @ManyToOne
-가장 많이 사용하는 N:1 연관관계이다.
3-2. @OneToMany
-보통 연관관계의 주인은 많은 쪽이 가진다 했지만, @OneToMany의 경우 1인 쪽이 연관관계의 주인이 된다. 하지만 테이블은 많은 쪽(N)이 외래키를 갖는다. -> 객체와 테이블의 차이를 발생
-(@JoinColumn을 반드시 사용해야한다. 사용하지 않으면 중간에 새로운 테이블(조인 테이블)이 생성된다.)3-3. @OneToOne
-1:1 연관관계로, 주 테이블과 대상 테이블 중 외래 키를 선택할 수 있다.
-외래키에 데이터베이스 Unique 제약 조건이 필요하다.3-4. @ManyToMany
-사용을 지양해야 한다. 관계형 데이터베이스는 정규화된 테이블 2개로 다대다 관계를 표현할 수 없다. -> 연결 테이블을 추가해서 일대다, 다대일 관계로 풀어야 한다.