3월 21일 화요일 TIL 회고록
내일 모의 면접때 나올 질문들 예상하고 답변을 적어보기
Spring MVC를 사용한 이유?
MVC는 Model, View, Controller의 약자이고, 비즈니스 처리 로직과 사용자 인터페이스를 위한 화면이 명확하게 구분되어있고, 서로 분리되어 있기 때문에 각자 맡은 역할에 집중하게 되어 유연성 증가, 쉬운 확장성, 유지보수 비용 절감등의 의점이 있어서 사용하였다.
Spring JPA를 사용한 이유?
Mybatis보다 성능이 좋고, 쿼리를 일일히 작성할 필요도 없다. SQL 중심적인 개발에서 객체중심적인 개발이 가능하기 때문이다.
생산성이 증가하고, 유지보수가 쉽다는 장점이 있기 때문에 Spring JPA를 사용하였다.
네이티브 Query나 JPQL을 사용하지 않은 이유는 무엇인지?
네이티브 Query는 자동으로 매핑이 안되어 개별적으로 코드를 작성 해 주어야 하고, JPQL은 QueryDsl과는 달리 IntelliJ에서 오탈자를 잡아주지 않아 에러가 날 시 찾기가 힘들기 때문에 사용하지 않았다.
JPA, QueryDsl 동작 방식이 어떻게 되는지?
JPA는 자바 어플리케이션과 JDBC API 사이에서 동작한다. 개발자가 JPA 한테 명령 -> JPA가 JDBC API 사용해서 SQL 호출 -> 결과를 받아서 동작
QueryDsl은 도메인 타입의 프로퍼티를 반영해서 생성한 쿼리 타입을 이용해서 쿼리를 작성한다.
싱글톤 패턴 설명하기
- 하나의 클래스에 오직 하나의 객체 인스턴스만 가지는 패턴이다.
- 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 어디에서든 공유하며 접근,사용할 수 있다.
- 싱글톤 패턴으로 만들어진 클래스는 생성자가 여러번 호출되더라도, 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 보낸다.
Redis를 사용한 이유
- Key(LoginId) - Value(Refresh Token)외에 다른 필드가 필요하지 않음
- I/O(입출력)이 빈번하게 발생하는 환경
- 저장된 데이터 개수와 무관하게 O(1)의 수행시간을 가진다.
- 저장된 모든 token을 조회하는 등의 싱글 스레드의 단점이 부각될 상황이 없음
단일 테이블 전략을 사용한 이유?
- JPA는 DB와 객체를 매핑해주는 자바 진영의 ORM 기술 표준이지만 객체의 상속 관계와 정확하게 일치하는 DB모델링은 존재하지 않음
- 따라서 차선책으로 상속 관계와 비교적 유사한 슈퍼타입-서브타입 모델링 기법으로 DB를 상속 객체에 매핑
- 슈퍼타입-서브타입 논리모델을 실제 DB 물리모델로 구현하는 방법으로 3가지 전략 중 단일 테이블 전략을 사용
AWS S3을 사용한 이유?
S3는 사용한 만큼만 비용을 지불하고, 무한대로 확장이 가능하며, EBS와는 다르게 여러개의 Application이 동시에 접근할 수 있다는 장점이 있으므로 S3을 선택함