티스토리 뷰
항해가 끝나고 몇 번의 면접을 끝내고 개강을 하니 지쳐서 일주일 정도 쉬려고 했는데.. 일주일이 이주일이 되고... 이제 거의 3주가 다 되어 가는데, 이제부터 꾸준히 TIL 작성, 커밋, 면접 예상 질문들을 정리해보려고 한다. 개강과 함께 정신 좀 차렸으면 좋겠다.. 내 자신
1. JPA는 무엇인가?✅
RDBMS(관계형 데이터 베이스)와 OOP(객체 지향 프로그래밍) 객체 사이의 불일치를 해결하기 위한 ORM(Object-Relational Mapping) 기술. ORM 기술을 구현하기 위해 사용된 것이 Hibernate이고, 이러한 ORM 기술 프레임 워크의 표준화의 결과로 만들어진 것이 JPA이다.
JPA를 이용하면 개발자가 직접 DB를 작성하지 않고 JPA API를 통해 데이터 베이스를 저장, 관리할 수 있다.
- 객체 중심 개발을 가능하게 함 : SQL문을 이용하지 않고도 DB 저장 관리 가능, SQL을 다루면서 나올 수 있는 실수를 줄여줌
- 생산성 증가
- 유지 보수 용이: 쿼리 수정이 필요할 때, 이를 담아야 할 DTO 필드도 모두 변경해야 하는 작업이 필요하지만 JPA에서는 엔티티 클래스 정보만 변경하면 되므로 유지보수에 용이
- 성능 증가
하지만 JPA는 실시간 쿼리에 최적화 되어있기 때문에 통계와 같은 복잡한 쿼리는 Mybatis와 같은 Mapper를 사용하는게 용이하다.
2. Spring Framework와 Spring Boot의 차이 ✅
Spring Boot는 기능이 많아 설정에 많은 어려움을 겪었던 Spring Framework의 환경 설정을 많은 부분 자동화하여 편하게 Spring을 사용할 수 있게 만들어주는 도구.
Spring: 밀키트 (기존에 존재하였지만 너무 무거워서, WAR)
SpringBoot: 냉동식품 (간소화, 필요없는 기능까지, 톰캣 내장, JAR)
차이점
- Dependancy : Spring Boot Starter을 통한 dependency 자동화로 인해 의존성 추가와 버전 관리에 용이해짐.
- Configuration : Spring Boot Framework는 application.properties파일이나 application.yml파일에 설정하면 된다. 강력한 AutoConfiguration.
- 편리한 배포: Spring Framework로 개발한 애플리케이션의 경우, war파일을 Web Application Server에 담아 배포한다. Spring Boot Framework는 Tomcat과 같은 내장 WAS를 가지고 있기 때문에 jar 파일로 간편하게 배포 jar file을 이용해 자바 옵션만으로 손쉽게 배포가 가능하다. (+ Spring Boot에 Tomcat이 내장되어있기 때문에 Spring Boot는 Spring Framework와 달리 따로 WAS 서버를 설치하거나 버전을 관리해 주어야 할 필요가 없다. )
3. Spring Web MVC의 Dispatcher Servlet의 동작 원리에 대해서 간단히 설명해주세요.✅
Dispatcher Servlet은 Presentation layer(표현 계층) 전면에서 HTTP 프로토콜을 통해 들어오는 모든 요청을 중앙 집중식으로 처리하는 프론트 컨트롤러 이다. 클라리언트의 요청이 있을 시 가장 앞단에서 요청을 가로채어 요청에 매핑되는 Controller에 작업을 전달하고 비지니스 로직(Service) 처리 후 해당 결과를 View 클라이언트에 전달하는 역할을 한다.
*서블릿(Servlet) : 클라이언트 요청을 처리하고 그 결과를 반환하는 웹 프로그래밍 기술
- 클라이언트에서 요청이 들어오면서 서블릿 컨테이너(Tomcat)가 요청을 받는다.
- 공통 작업은 DispatcherServlet에서 처리한다.(HTTP 요청들을 매핑된 컨트롤러로 배치해준다.)
리퀘스트가 들어오면 먼저 디스패처 서블릿을 거친다. 여기서 핸들러 매핑을 통해 컨트롤러의 어떤 메소드를 실행해야 하는지 결정되고, 핸들러 어댑터를 통해 실행하여 서비스 로직을 거치면, ModelAndView 객체를 통해 뷰 네임을 뷰 리졸버에게 전달하여 뷰를 반환한다.
4. Spring Bean Life Cycle에 대해 설명해주세요 ✅
- Spring Container 생성(IoC 컨테이너 생성)
- Spring Bean 생성(싱글톤)
- Dependancy Injection (의존관계 주입)
- 초기화 콜백
- 사용
- 소멸전 콜백
- Spring 종료
5. filter와 interceptor의 차이✅
Filter: Web Context에 포함되서 Dispatcher Servlet이 요청 전에 발생하는 것
Interceptor: 스프링 컨텍스트에서 동작
+ 3, 4, 5 추후 수정
'TIL(Today I Learn)' 카테고리의 다른 글
WIL 6주차(Week I Learn) (0) | 2022.06.27 |
---|---|
WIL 5주차(Week I Learn) (0) | 2022.06.19 |
TIL 220609 (0) | 2022.06.09 |
TIL 220606 (0) | 2022.06.06 |
TIL 220603 (0) | 2022.06.03 |