[WIL] 항해99 5주차 - ORM / SQL / MVC

Doyeon·2023년 2월 18일
0
post-thumbnail

WIL (23.02.13~02.18)

[5주차] 주특기 숙련 + 주특기 심화

월~목요일은 Spring 숙련, 금~토는 Spring 심화 과정을 진행했다.

  • 주특기 숙련
    • 회원가입, 로그인, 댓글 작성/조회/수정/삭제 기능이 추가된 SpringBoot 게시판 백엔드 서버 만들기
      • 회원, 게시글 및 댓글 JPA 연관관계 매핑
      • 댓글 작성, 수정, 삭제 구현
      • 게시글 조회 시 댓글 조회 기능 구현
      • @ControllerAdvice 사용하여 전역 예외처리
    • 공부 & 정리
      • @Size, @Length, @Column(length=value) 비교
      • Entity, DTO 에서 사용하는 lombok 어노테이션 이해
      • 쿠키, 세션, JWT
  • 주특기 심화
    • 심화 주차 강의 1회 완강
      • Spring Security
      • OAuth2
      • Test
      • AOP
      • Exception
      • Transaction
    • 기존 프로젝트에 Spring Security를 적용 및 좋아요 기능 추가하기
      • Spring Security 적용
      • 게시글, 댓글 좋아요 API
      • AOP를 활용한 예외처리

ORM / JPA / Spring Data JPA

  • ORM(Object Relational Mapping)
    • 객체와 관계형 데이터베이스를 매핑하는 것
    • 객체는 객체대로 설계하고, 관계형 데이터베이스는 관계형 데이터베이스대로 설계한 후, ORM 프레임워크가 중간에서 매핑한다.
  • JPA(Java Persistence API)
    • 자바 ORM 기술 표준으로 사용되는 인터페이스 모음

    • 인터페이스이므로 JPA를 구현한 ORM 프레임워크인 Hibernate, EclipseLink, DataNucleus를 사용한다.

    • 자바를 해석하고, 매핑한 데이터베이스에 맞게 SQL 쿼리를 보내주는 역할을 한다.

    • 개발자가 JPA를 사용하면, JPA 내부에서 JDBC API를 사용하여 SQL 쿼리를 DB로 보낸다.

    • JPA에서 제공해주는 EntityManager로 데이터베이스에 접근한다. EntityManager의 API를 직접 호출해야 한다.

  • Spring Data JPA
    • JPA를 추상화시킨 Repository Interface를 제공하여 개발자가 JPA를 더 편하게 사용할 수 있게 하는 모듈

    • Repository Interface에 이미 EntityManager가 포함되어 있기 때문에 직접 작성하지 않아도 내부에서 자동으로 호출된다.

MVC(Model-View-Controller)

  • 어플리케이션을 Model-View-Controller 세 가지 역할로 구분한 소프트웨어 디자인 패턴
  • 비지니스 로직과 화면을 구분한다.
  • Back단과 Front단을 구분한다. → 유지보수를 독립적으로 수행 가능하다.
  • Model과 View가 다른 컴포넌트들에 종속되지 않는다. → 애플리케이션 확장성, 유연성, 재사용성

MVC 패턴과 Spring MVC


이번주 TIL 모음

@Size, @Length, @Column(length) 차이점
@NoArgsConstructor, @Getter 언제, 왜 사용할까?
인증 방식(쿠키, 세션, JWT)에 대해 알아보자
Spring Security 예제와 함께 이해하기

profile
🔥

0개의 댓글