프로젝트
![](https://tistory1.daumcdn.net/tistory/6804990/skin/images/no-image.jpg)
✅ 필요한 것 게시글을 올린 user 정보 (이름, 프로필사진) 사진에 대한 정보 캡션에 대한 정보 좋아요, 댓글에 대한 정보 (좀 뒤에 구현 예정) 📌 ImageDto package yerong.InstagramCloneCoding.web.dto.image; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.*; import yerong.InstagramCloneCoding.domain.user.User; @Builder @AllArgsConstructor @NoArgsConstructor @Getter @Setter public class ImageDto { private Long id; private String ..
![](https://tistory1.daumcdn.net/tistory/6804990/skin/images/no-image.jpg)
✅ 구독 정보를 누르면 page User의 구독 정보를 볼 수 있음 ✅ 여기서 구독취소/구독하기 버튼은 로그인한 user를 기준으로 구분되어야 함. 📌 UserProfileDto package yerong.InstagramCloneCoding.web.dto.user; import lombok.*; import yerong.InstagramCloneCoding.domain.user.User; @Getter @Setter @NoArgsConstructor @AllArgsConstructor @Builder public class UserProfileDto { private boolean pageOwnerState; private int imageCount; private boolean subscribeSta..
![](http://i1.daumcdn.net/thumb/C400x400/?fname=https://blog.kakaocdn.net/dn/bkpW7A/btsEZnpk0NI/k1dlukbyCRB5tR1Ls5MU71/img.jpg)
![](https://tistory1.daumcdn.net/tistory/6804990/skin/images/no-image.jpg)
포토 이미지 등록 multipart/form-data UUID 포토 이미지 렌더링 엔티티에 파일이 아닌 url 저장 사진을 전송받으면 그 사진을 서버에 특정 폴더에 저장하게 될 것임(DB에 그 경로를 insert 할 것!) 📌 Image 엔티티 구현 package yerong.InstagramCloneCoding.domain.image; import jakarta.persistence.*; import lombok.*; import yerong.InstagramCloneCoding.domain.user.User; @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter @Builder @Entity public class..
![](https://tistory1.daumcdn.net/tistory/6804990/skin/images/no-image.jpg)
✅ 연관관계 N : 1 관계에서는 Fk는 Many 쪽에 둔다 N : N 의 관계에서는 중간 테이블이 필요하다 (N : 1로 나누어야 함) 📌 API 시큐리티 설정 .authorizeHttpRequests(authorizationRequest -> authorizationRequest .requestMatchers( AntPathRequestMatcher.antMatcher("/"), AntPathRequestMatcher.antMatcher("/user/**"), AntPathRequestMatcher.antMatcher("/image/**"), AntPathRequestMatcher.antMatcher("/subscribe/**"), AntPathRequestMatcher.antMatcher("/co..