스프링 키워드 스터디 - 1

딩딩당당·2022년 11월 27일
0

1. 내가 이해한 JPA

  • JPA
    자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스

쉽게 말해 반복적인 SQL 쿼리문을 대신 처리해줘서 개발자는 객체 지향적으로 코드를 작성하는데 집중할 수 있다.

JAVA의 객체지향과 데이터베이스의 구조는 충돌되는 부분이 있다. 상속이 그 대표적인 사례인데 객체엔 상속이 존재하지만 데이터베이스엔 존재하지 않는다. 이를 패러다임 불일치라고 하는데 이 부분이 원래 개발자가 코드 작성을 통해 해결해야하지만 JPA는 패러다임 불일치를 개발자 대신 해결해준다.

JAVA의 객체 상속 구조

데이터베이스의 슈퍼, 서브타입 구조

위처럼 객체와 데이터베이스의 구조를 비슷하게 만든다고 한들 JPA를 이용하지 않으면 단순 삽입, 조회 기능에 작성해야할 코드가 적지 않다.

abstract class Item {
    Long id;
    String name;
    int price;
}

class Album extends Item {
    String artist;
}

class Movie extends Item {
    String director;
    String actor;
}

class Book extends Item {
    String author;
    String isbn;
}

사진에 보여진 자바 객체 코드는 위와 같고, ALBUM 테이블에 무언가 삽입하려면

INSERT INTO ITEM ...
INSERT INTO ALBUM ...

이렇게 sql만 두줄 작성해야하고, JDBC API를 이용해서 코드를 작성하려면 ITEM용 SQL을 작성하고 ALBUM용 SQL을 따로 작성해야한다.
이러한 과정이 패러다임 불일치를 해결하기 위해 개발자가 들이는 비용인데 이를 JPA가 중간에서 해결해준다.

  • JPA를 이용한다면?

presist()메소드를 사용해서 객체를 저장한다.

jpa.persist(album);

JPA는 다음 SQL을 작성하고 실행해서 객체를 ITEM, ALBUM 두 테이블에 나누어 저장해준다.

// JPA 내부적으로 자동으로 작성, 실행
INSERT INTO ITEM ...

INSERT INTO ALBUM ...

이 처럼 개발자가 sql을 따로 작성하거나 JDBC API를 이용하면서 작성해야할 코드가 생략되는 것을 볼 수 있다.

*객체의 참조와 데이터베이스의 pk,fk 등 패러다임 불일치에 대한 설명을 좀 더 길어질 수 있지만 패러다임 불일치에 대해 더 깊게 파고들면 주제에 벗어나는 것 같아 따로 포스팅을 해야겠다.

JPA는 개발자가 객체지향적인 코드 작성에만 몰두할 수 있게 패러다임 불일치를 해결하고, SQL 쿼리문을 대신 작성해주는 API인 것 같다.

2. 내가 이해한 디자인 패턴 - MVC

MVC 디자인 패턴 특징
소프트웨어가 서비스하기 위해서는 여러 과정과 처리가 필요한다.
그러한 처리들을 각 기능 단위 별로 나눠서 처리한다.
그러므로써 프로그래밍을 할 때 역할을 하는 정돈된 코드를 작성할 수 있다.
디버깅이나 코드 가독성을 높인다.

MVC 디자인 패턴 흐름

  • DispatcherServlet 클라이언트의 요청을 전달받아 요청에 맞는 컨트롤러가 리턴한 결과값을 View에 전달하여 알맞은 응답을 생성
  • HandlerMapping 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 결정
  • Controller 클라이언트의 요청을 처리한 뒤, 결과를 DispatcherServlet에게 리턴
  • ModelAndView 컨트롤러가 처리한 결과 정보 및 뷰 선택에 필요한 정보를 담음
  • ViewResolver 컨트롤러의 처리 결과를 생성할 뷰를 결정
  • View 컨트롤러의 처리 결과 화면을 생성, JSP 또는 Velocity 템플릿 파일 등을 뷰로 사용

3. 내가 이해한 RESTful

  • REST의 의미
    자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.

  • REST의 개념
    HTTP URI를 이용해 HTTP Method(POST, GET, PUT, DELETE)를 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

  • CRUD란?

  1. Create : 생성
  2. Read : 조회
  3. Update : 수정
  4. Delete : 삭제

RESTful을 이해하기 위해서는 먼저 REST API 설계 규칙부터 알아야한다.

  1. 슬래시는 계층 관계를 나타내는데 사용한다.
  2. URL 마지막에 슬래시를 작성하지 않는다.
  3. 하이폰(-)은 URI 가독성을 높이는데 사용한다(URI가 긴 경우)
  4. 밑줄(_)을 URI에 사용하지 않는다.
  5. URI 경로에는 되도록 소문자만을 이용한다.
  6. 파일확장자는 URI에 포함시키지 않는다.

RESTful하다는 것은 위 규칙을 지키면서 CRUD를 각 적합한 상황에 사용하는 것이다.

profile
자바공부해요흑흑

0개의 댓글

관련 채용 정보