본문 바로가기

항해99

23.09.11 항해 99 16기 주특기 Spring 16일차

오늘 공부한 것

* Lv3 과제 제출

* JAVA 객체 지향 복습

 

오늘은 드디어 Lv3 과제를 끝내고 제출했다

계속 막혀잇던 권한 문제도 잘해결했다 

memberRepository에서 username을 받아서 member를 만들어주었고

if문으로 member.getRoleEnum과 RoleEnum.Admin이 같을 때 업데이트가 될수 있게 변경했다

 

이후 프로젝트를 pull 하는 과정에서 

강제로 pull 하는 바람에 main branch에 있던 페어분께 사라지는 사고를 쳤지만

다행히 잘 수습이 되었다

 

아래와 같이 양식에 맞춰 답도 달아서 잘 제출했다

Lv.3 과제 제출 양식

프로젝트 문서

Project: Simple Post Comment Auth API Feature

💡 코드 컨벤션 - 함께 협업하기 위해, 어떤 규칙을 정했나요? (예시) 변수명은 CamelCase로 한다.

  1. Entity
    1. Identifier → 생략 금지
    2. 클래스명 단수
    3. @Setter → 금지
    4. 불필요한 어노테이션 입력 금지
    5. 클래스명
      1. class Board
      2. class Member
      3. class Comment
  2. 패키지화
    1. common → 패키지
    2. 각 기능 별 패키지로 관리
  3. Service/ Controller/ Repository
    1. ResponseEntity → ok status
    2. 모든 에러메시지는 한국말로
    3. @RequiredArgsContstructor
    4. 3줄이상 겹칠시 무조건 함수로 빼기 </aside>

💡 역할 분배 - 이번 과제의 역할 분배를 어떻게 했나요? 김용글 - Member, 깃관리 정우용 - Board and Comment, 테스트

 

💡 **내 페어(페어팀 X)**와 함께 답변을 적어 제출해주세요.

 

1. 처음 설계한 API 명세서에 변경사항이 있었나요? 변경 되었다면 어떤 점 때문 일까요? 첫 설계의 중요성에 대해 작성해

     주세요!

처음 API 명세서를 작성했을 때 댓글 작성 Request를 postid 라고 적었는데 URL은 POST 지만 CLASS 명칭이 board 이기 때문에 boardid가 맞는 것이었다. 첫 설계때 잘못 작성하니 test 때도 이상한 값을 넣게 되어서 많은 시간을 버리게되었다. 좀 더 신중히 작성해봐야겠다

 

2. ERD를 먼저 설계한 후 Entity를 개발했을 때 어떤 점이 도움이 되셨나요?

머리로만 생각하던 것을 한눈에 알아보기 쉬웠다 관계 형성할때 오류를 줄일 수 있었다.

 

3. JWT를 사용하여 인증/인가를 구현 했을 때의 장점은 무엇일까요?

동시 접속자가 많을 때 서버측 부하를 낮출 수 있고 Client, Sever 가 다른 도메인을 사용할 때 편리하다.

 

4. 반대로 JWT를 사용한 인증/인가의 한계점은 무엇일까요?

구현의 복잡도 증가하고 JWT에 담는 내용이 커질수록 네트워크 비용 가하며, 기 생성된 JWT를 일부만 만료시킬 방법이

없고 Secret key 유출시 JWT 조작가능

 

5. 댓글이 달려있는 게시글을 삭제하려고 할 때 무슨 문제가 발생할까요? JPA가 아닌 Database 테이블 관점에서 해결방법이 무엇일까요?

게시글 삭제와 함께 댓글도 삭제되어야 하므로 @OneToMany를 사용하여 cascade 영속성 전이로 해결이 필요하다.

 

6. 5번과 같은 문제가 발생했을 때 JPA에서는 어떻게 해결할 수 있을까요?

Cascade 혹은 OrphanRemoval을 활용하여 처리가 가능하다.

 

7. IoC / DI 에 대해 간략하게 설명해 주세요!

IoC 제어의 역전 설계의원칙이다 메소드나 객체의 호출작업을 개발자가 결정하는것이 아니라 외부에서 결정되는 것을 의미한다 객체의 의존성을 역전시켜 객체간의 결함도를 줄이고 유연한 코드를 작성할 수 있게 해준다. DI 의존성 주입 디자인패턴으로 객체를 직접 생성하는게 아니라 외부에서 생성 후 주입시켜주는 방식이다 모듈간의 결합도가 낮아지고 유연성이 높아진다.

 

이후에는 JAVA 부분의 기초가 너무 부족한게 느껴져서

객체지향쪽을 다시 공부해보기로하고 복습을 시작했다

 

클래스 객체를 정의해 놓은 것

            데이터와 함수의 결합이라고도 함

            1) 용도 객체를 생성하는데 사용됨

 

객체 실제로 존재하는 것 사물 또는 개념

         1) 용도 객체가 가지고 있는 기능과 속성에 따라 다름

         2) 구성요소 속성(멤버변수)과 기능(메서드)의 집합

 

인스턴스 클래스로부터 만들어진 객체를 그 클래스의 인스턴라고함

                참조변수(클래스명)를 통해서만 다룰 수 있으며 참조변수의 타입은 인스턴스의 타입과 일치해야한다

 

인스턴스화 클래스로부터 객체를 만드는 과정 

 

변수 하나의 데이터를 저장할 수 있는 공간

 

배열 같은 종류의 여러 데이터를 하나의 집합으로 저장할 수 있는 공간

 

구조체 서로 관련된 여러 데이터를 종류에 관계없이 하나의 집합으로 저장할 수 있는 공간