180119-TIL

Reading time ~1 minute

오늘 한일

- trello 구현하기

  • User 클래스를 Member 클래스로 변경(그에 따라 Service, Repository 등 전부 변경)

  • authorization 설정

  • Role 클래스 생성

  • UserDetails 인터페이스를 상속한 SecurityMember 제작 중

- 질문 사항

  • BoardServiceBoardRepositoryUserRepository가 있는 것이 괜찮은가?

    User -> Board -> Deck -> Card 같은 형태라면
    ( User -> Board )-> ( Deck ) -> ( Card )
    Service를 위와 같이 경계를 구분 지어서 사용이 가능 하다.
    대신 서로간의 경계가 벗어난 Board와 Card의 레파지토리가 동시에 존재하는건 좋지 않다.

  • List<T>을 반복문을 통해 List<TDto> 형태로 변경 하는게 성능 상 안좋을 것 같다. 게다가 모든 게시물을 불러올 일이 있으면 수천개의 글에 대해 반복문이 돌아야 할 것이다. 그러다보니 중간에 Dto를 만드는 걸 포기했다.

    일단 수천개의 질문을 보내는 일은 없을 것이다.(많아봐야 한페이지에 10~20개)
    Dto를 쓴다는 것 자체가 T -> TDto로 변환을 해줘야 하는데 그것부터 성능 문제를 신경 안쓰이느냐?
    결론적으론 Dto를 쓴다는 것 자체가 변환 과정에 대한 성능은 고려 안하고 Dto를 사용하여 얻는 이점을 활용 하겠다는 것이다.

  • boards.html, board.html에 따른 Controller의 url 이름 문제.

    일단 현재 생긴 문제 기준으로 따지면 HomeController에서 해결 가능하다.
    boards.html이 트렐로의 index페이지 성격이 강한데, 로그인 된 사용자가 /요청이 오면 boards.html로 가고, 로그인이 안된 사람이 요청을 하면 현재의 index.html 페이지로 가게 하면 된다.
    현재까지는 HomeController를 단순히 바로 인덱스 페이지로 이동하는 방식으로만 사용했는데 위와같은 동작을 하게 추가 할 수도 있다.

  • VO란?

    일단 알다시피 불변객체로, 아래처럼 활용 가능 하다.

      public class User {
        private long id;
        private Account account;
        
        public User(long id, Account account){
        ...
        }
      }
    
      public class Account {
        private String name;
        private String password;
    
        public Account(String name, String password){
          ...
        }
      // 이후 setter 메서드는 절대 만들지 않고,
      // getter 혹은 equals를 만들어서 값(value)을 활용 한다.
     }
    

오늘 느낀점

  • 스타트 스프링 부트라는 책을 읽고 실습을 진행해보고 있는데 진행되는 과정이 이해는 되지만 따라 하는 느낌을 지울 수 없다. 그렇다고 없이 하자니 신경 써줘야 할 것들이 생각 보다 많아서 쉽진 않은 것 같다. 일단 내일 중으로 해당 부분은 마무리하고 자소서 작성을 해봐야겠다.

내일 할일

  • trello 구현하기

    • Spring Security를 사용한 로그인, 회원 가입 구현
  • 자소서 작성