TIL)23.07.03(Spring 숙련 팀과제)

주민·2023년 7월 4일
0

TIL

목록 보기
31/84

문제 : 뉴스피드 프로젝트

뉴스 피드란? 내 게시물을 포함한 모든 게시물을 볼 수 있는 공간

팀원분 중 한분이 아이디어를 내주셔서 KeepIt이라는 웹사이트 URL 저장을 만들기로 했다.

세부 내용 => SA

▶ 역할 분담

  • 로그인
  • 회원가입
  • 프로필 관리
  • 피드
  • 폴더(담당)

강의에 예제 중에 폴더 만들기가 있어 그걸 참고하여 만들었다.


문제풀이

오류 보다는 헷갈렸던 몇가지 정리했다.

  • N대 M 관계의 entity의 중간 파일을 만들기
    => Feed와 Folder과 N대 M 이기 때문에 FeedFolder로 파일 생성
* FeedFolder

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // feed 연결 => FeedFolder 대 feed 기준
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="feed_id",nullable = false)
    private Feed feed;

    // folder 연결 => FeedFolder 대 folder 기준
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="folder_id",nullable = false)
    private Folder folder;

    public FeedFolder(Feed feed, Folder folder){
        this.feed = feed;
        this.folder = folder;
    }
    
    
* FeedFolderRepository
	=> 폴더를 조회하는 경우 사용 -> 호출 class :FeedService
    => 타 repository와 동일
    
Optional<FeedFolder> findByFeedAndFolder(Feed feed, Folder folder);   
  • 폴더 추가!
    => 원하는 웹사이트를 내가 만든 폴더에 집어 넣기
public void addFolders(List<String> folderNames, User user) {

    List<Folder> existFolderList = folderRepository.findAllByUserAndTitleIn(user,folderNames);
    => 입력한 유저명의 전체 폴더 가져오기
    List<Folder> folderList = new ArrayList<>();

    for (String folderName : folderNames) {
        if(!isExistFolderName(folderName,existFolderList)){
         => 기존에 있는 폴더와 비교(중복 확인)
            Folder folder = new Folder(folderName, user);
            => 중복된게 없다면 새로운 폴더 만들기
            folderList.add(folder); => 추가
        } else {
            throw new IllegalArgumentException("폴더명이 중복되었습니다.");
        }
    }
    folderRepository.saveAll(folderList); => 저장
}

=> DB에 있는 데이터인지 확인하는 메서드
private boolean isExistFolderName(String folderName, List<Folder> existFolderList) {
    for(Folder existFolder : existFolderList){
        if(folderName.equals(existFolder.getTitle())){
            return true;
        }
    }
    return false; => 값이 일치하는게 하나도 없음
    => 그럼 addFolders 에서 !false => true 로 받아 폴더를 만들어줌
}

0개의 댓글

관련 채용 정보