간단 기술 면접 질문

김준영·2023년 5월 9일
1

Code States

목록 보기
17/33

Spring MVC의 요청 처리 과정


  1. 클라이언트의 요청을 디스패처서블릿에 요청이 전달된다.
  2. 디스패처서블릿은 핸들러 매핑을 통해 요청을 처리할 컨트롤러를 검색한다.
  3. 매핑되는 핸들러 객체를 디스패처서블릿에게 리턴한다.
  4. 클라이언트 요청을 처리할 핸들러 메서드 호출을 핸들러 어뎁터에게 위임한다.
  5. 컨트롤러를 호출하여 비즈니스 로직 처리 후 모델 데이터를 핸들러 어뎁터에 전달한다.
  6. 모델 데이터와 뷰 정보를 다시 디스페처서블릿에게 전달 후, 뷰 정보를 다시 뷰 리졸버에게 전달하여 뷰 검색을 요청한다.
  7. 뷰를 찾아 리턴한 후, 응답 데이터를 생성해서 디스패처 서블릿이 클라이언트에게 전달한다.

간단하게 하면

클라이언트의 요청을 받은 DispatcherServlet은 요청에 알맞은 컨트롤러를 찾아 요청을 전달하고, 요청을 통해 생성된 Model데이터를 View객체를 통해 사용자에게 응답한다.

DTO


데이터를 전송하기 위한 객체

DTO는 일반적으로 계층과 계층사이에서 데이터 전송을 용이하게 하기 위해 사용되며 또한 웹 서비스 또는 다른 애플리케이션과 데이터를 전송할때 사용된다.

장점

데이터의 불필요한 부분을 제거할 수 있어 애플리케이션의 성능을 향상시키는 데 도움이 되며, 중요한 데이터가 외부로 노출될 위험을 줄여 보안성을 높이는데 도움을 주고 객체간의 결합도를 낮출 수 있는 장점이 있습니다.

단점

전송 객체를 매번 새로 만들어야하고, 매핑과 관련해서 번거로움이 있다는 단점이 있습니다.

ORM


객체 지향 프로그래밍에서 사용되는 객체와 관계형 데이터베이스의 데이터를 매핑해주는 기술입니다.

ORM을 사용하면 데이터베이스와의 상호작용을 추상화하고, 객체 지향적인 코드로 데이터베이스를 조작할 수 있으며 SQL 작성의 번거로움을 줄일 수 있다는 장점이 있습니다.

트랜잭션


데이터베이스에서 한번에 수행되어야 할 일련의 작업들을 하나의 논리적인 작업 단위로 묶어서 처리하는 것을 말합니다.

트랜잭션은 All or Nothing이라는 처리 방식으로 데이터의 무결성을 보장하는 핵심적인 역할을 합니다.

원자성, 일관성, 격리성, 지속성이라는 ACID원칙을 이용합니다.

테스트


  • 기능테스트

    애플리케이션을 사용하는 사용자 입장에서 애플리케이션이 제공하는 기능이 올바르게 동작하는지를 테스트합니다.

  • 통합 테스트

    통합 테스트는 다양한 모듈이나 컴포넌트들이 서로 잘 작동하는지 검증하는 것입니다

  • 슬라이스 테스트

    슬라이스 테스트는 애플리케이션을 특정 계층으로 쪼개어서 하는 테스트를 의미합니다.

또한 애플리케이션의 일부만 테스트하기 때문에 부분 통합 테스트라고 부르기도 한다

  • 단위 테스트

    단위 테스트는 소프트웨어의 개별 단위(함수, 모듈 등)를 테스트하는 것입니다. 이를 통해 개별 단위가 정확하게 동작하는지, 예외 상황에서 어떻게 동작하는지 등을 검증합니다.

profile
ㅎㅎ

0개의 댓글