[TIL] 3월 15일

yeon·2021년 3월 15일
0

미션3 구현

getter 사용으로 데이터를 직접 꺼내는 대신 객체가 일을 하도록 하기 (캡슐화)

if (!id.equals(sessionedUser.getId())) {
        throw new IllegalStateException("자신의 정보만 수정할 수 있습니다.");
}
  • getId()와 같은 메소드로 데이터를 직접 꺼내는 것이 아니라, User 클래스에서 isIdMatching()과 같은 메소드를 생성한다.

→ getter를 이용해 직접조회하는것을 막는것을 캡슐화라고 함

custom exception 삭제, 기존의 NoSuchElementException 발생하도록 변경

기존의 예외로도 충분히 예외발생 정보를 전달할수 있을거라고 판단

Todo: UserController에서 update()와 updateForm() 에 중복부분 어떻게 제거할지 고민하기

jsessionid란?

jsessionid란??

톰캣 컨테이너에서 세션을 유지하기 위해 발급하는 키

  • http프로토콜은 stateless하다. 상태를 저장하기 위해 톰캣은 jsessionid 쿠키를 클라이언트에게 발급하고 이 값을 통해 세션을 유지하도록 한다.
    • jsessionid 쿠키 : jsessionid의 세션 유지 방법으로 내부적으로 쿠키를 사용한다.

DAO, DTO, Entity Class의 차이

[DAO] DAO, DTO, Entity Class의 차이 - Heee's Development Blog

DAO

Data Access Object

  • 실제로 DB에 접근하는 객체 : qna프로젝트에서 UserRepository랑 QuestionRepository에 해당
    • Persistence Layer (DB에 데이터를 CRUD하는 계층)
  • Service와 DB를 연결하는 고리역할
  • SQL을 사용하여 DB에 접근하고, 적절한 CRUD API 제공
    • JPA 대부분의 기본적인 CRUP method를 제공하고 있다.
    • extends JpaRepository<User, Long>

DTO

Data Transfer Object

  • 계층간 데이터 교환을 위한 객체(Java Beans)
    • DB에서 데이터를 얻어 Service나 Controller로 보낼때 사용하는 객체
  • Request와 Response용 DTO는 View를 위한 클래스
    • toEntity() 메소드를 통해서 DTO에서 필요한 부분을 이용하여 Entity로 만든다.
    • Controller Layer에서 Response DTO 형태로 Client에 전달

VO(Value Object) vs DTO

  • VO는 DTO와 동일한 개념이지만 readOnly 속성을 가짐

  • VO는 특정한 비즈니스값을 담는 객체이고,

    DTO는 Layer간의 통신용도로 오고가는 객체

Entity Class

  • 실제 DB의 테이블과 매칭될 클래스

    • @Entity, @Column, @Id
  • Entity클래스와 DTO 클래스를 분리하는 이유 (이부분은 이해가 잘 안된다.)

    • View Layer와 DB Layer의 역할을 철저하게 분리하기 위해

    • 테이블과 매핑되는 Entity클래스가 변경되면 여러 클래스에 영향을 끼친다.

      반면, View와 통신하는 DTO클래스(Request 클래스, Response 클래스)는 자주 변경되므로 분리해야한다.

  • controller : url과 view를 매핑처리, 적절한 ResponseEntity(DTO)를 body에 담아 Client에 반환

  • service : DAO로 DB에 접근하고, DTO로 데이터 전달받고, 비즈니스로직을 처리해서 데이터를 반환한다.

  • repository(DAO) : service와 DB를 연결하는 고리역할, 실제로 DB에 접근하는 객체


오늘 한일

  • 호눅스의 DB수업후에 실습 따라해보려고 AWS 서버에 MySQL 설치하고 sequel ace로 연결하려고하는데 실패한다. 오늘 수업 어려웠는데 일단 루카스에 첨부되어있는 강의들로 입문하고, SQL 첫걸음 빌려서 봐야겠다.
  • DAO, DTO, Entity class에 대해 학습했다. qna 미션의 클래스들이 어떤 역할을 하는건지 감이 온다. controller, service, repository에 대해서도 계속 학습하면서 개념을 명확하게 만들려고 하는중이다.
  • 영한님 스프링 핵심원리 강의 들었다. 스프링 컨테이너 생성하는 방법, 컨테이너에 등록된 빈 조회하는 테스트 코드 짜기, 동일한 타입의 빈이 둘 이상이면 타입뿐만아니라 빈 이름을 지정해서 조회해야한다.
  • 미션3 진행중 질문하기 부분 진행하고 내일 pr 날리자
  • 주말에 스트레스받는 일이 있어서 피로가 누적된 기분.. 무리하지 말아야지

Todo

내일

  • 미션3 pr날리기
  • 데이터베이스 루카스에 첨부된 강의 학습
  • 이것도 보자

[SpringCamp2013] ORM 프레임워크를 활용할 때의 설계, 개발 프로세스

0개의 댓글