백엔드 개발자 기술 면접 정리 - Spring, JPA
·
[ 기타 ]/Tech Interview
Spring 웹 개발 관련 질문 모음입니다. 자세한 내용은 추가로 검색을 해보셔서, 본인의 언어로 정리하시길 추천드립니다. 이 글 역시 제 생각과 언어에 맞게 정리하였고, 틀린 부분이 있을 수 있으니 댓글로 지적해 주시면 감사하겠습니다! [ Spring ] 💡IoC(Inversion of Control) 란? ⬇️Answer 더보기 제어의 역전 IoC는 객체의 생성과 관리를 스프링 프레임워크가 대신하도록 위임 스프링 컨테이너에 Bean을 미리 등록하고, 필요한 곳에서 컨테이너에서 빈을 가져와 사용할 수 있게 됩니다. 이때, Bean을 가져올 때 의존성 주입(DI) 방식을 사용하여 객체 간의 의존성을 자동으로 주입받을 수 있게 됩니다. 💡DI (Dependency Injection) 란? ⬇️Answer ..
[Computer Science/디자인 패턴] 전략 패턴(strategy pattern)
·
[ Computer Science ]/프로그래밍 이론
전략 패턴(strategy pattern) 전략 패턴은 정책 패턴(policy pattern)이라고도 하며, 객체의 행위를 바꾸고 싶은 경우에 직접 수정하지 않고 "전략"이라고 부르는 "캡슐화된 알고리즘"을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴이다. 비즈니스 로직을 인터페이스로 만들고, 해당 인터페이스를 구현한 클래스를 사용하도록 만드는 것이라고 생각하면 된다. 우선 Java 코드를 이용한 기본 예제로 알아보고, 추가로 Spring에서 어떻게 전략 패턴을 사용하는지 알아보자. Java 기본 예제 예제로 알아보자. interface : Payment public interface Payment { void pay(int amount); } 구현체 1 : KakaoCardPayment..
[Spring Boot] DispatcherServlet - 스프링부트의 동작 구조
·
[ Computer Science ]/프로그래밍 이론
스프링 부트의 동작 구조 스프링 부트의 기본 의존성 중 하나인 spring-boot-starter-web 모듈을 사용하면, 기본적으로 내장 톰캣(Tomcat)을 사용하는 스프링 MVC 구조를 기반으로 동작한다. 클라이언트의 요청이 들어오면 서블릿이 이를 처리해야 하는데, 서블릿은 서블릿 컨테이너에서 관리하고, 톰캣이 서블릿 컨테이너의 역할과 WAS(Web Application Server)의 역할을 담당한다. 서블릿(Servlet)은 클라이언트의 요청을 처리하고, 결과를 반환하는 자바의 웹 프로그래밍 기술이다. 서블릿 컨테이너의 특징 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리한다. 서블릿 객체는 싱글톤 패턴으로 관리된다. 멀티 스레딩을 지원한다. Dispatcher Servlet 이란..
[Java/Spring] 백엔드 개발 프로젝트 명세서 (Fitness Record)
·
[ 기타 ]/개인 프로젝트
Github https://github.com/HSRyuuu/FitnessRecord 1. 개요 프로젝트 명: FitnessRecord 개발 기간: 2023.10.18 ~ 2023.11.18 개발 인원: 1명 주요 기능: 운동(웨이트 트레이닝) 기록, 루틴 공유 커뮤니티 서비스 2. Skills Java 11, Spring Boot 2.7.16, gradle 8.2.1 Spring Data JPA, Spring Security MariaDB, Redis JUnit5 IntelliJ Idea 기타 사용 기술 상세 JWT redisson (분산 락, JWT Token 관리) google GSON Gmail smtp 메일 발송 Swagger 3. 요구 사항 1) 인증, 인가 Spring security 이용 ..
[JPA] @Entity - 필드와 컬럼 매핑의 여러가지 속성
·
JPA & QueryDSL
필드와 컬럼 매핑 엔티티 클래스의 각 필드에 여러 가지 옵션을 갖는 어노테이션을 붙여서 더 자세히 매핑할 수 있다. Column 별 매핑 상세 @Column : 컬럼 DB 테이블의 각 컬럼 관련 제약사항 등을 추가할 수 있다. @Enumerated : enum 타입 DB에는 enum 타입이 없기 때문에 속성을 지정할 수 있다. enum은 기본적으로 숫자, 문자열 두 가지가 있다. @Enumerated(EnumType.STRING) private RoleType roleType; EnumType.STRING으로 지정하면 실제 enum의 문자열이 저장되고, EnumType.ORDINAL로 지정하면 enum 순서를 0부터 시작되는 숫자로 지정된다. STRING이 권장되고, ORDINAL은 사용하지 않는 게 좋..
[Spring Boot] @RequestMapping 매핑
·
Spring
@RequestMapping 메서드 위에 @RequestMapping("/url") 이 붙으면 /url이 호출 됐을 때 해당 메서드를 실행하도록 매핑한다. 해당 클래스가 @Controller로 지정되어 있다면 , 메서드가 String을 반환했을 때 반환 값은 view 이름으로 인식된다. @RestController로 지정되어 있다면, Rest API요청에 대한 응답 (JSON)을 반환한다. ex1) URL 다중 설정 대부분 속성을 배열로 제공하므로 다중 설정이 가능하다. @RequestMapping("/hello","/hi") public String hello(){ log.info("hello"); return "ok"; } ex2) HTTP 메소드 매핑 @RequestMapping이 특정 HTTP 메..
[JPA] 영속성 컨텍스트의 주요 개념 / Spring Data JPA에서의 영속성
·
JPA & QueryDSL
영속성 컨텍스트영속성 컨텍스트는 데이터(Entity)를 영구 저장하는 환경이라는 뜻으로, 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 영속성 컨텍스트는 논리적인 개념으로 눈에 보이는 개념은 아니지만, EntityManager를 생성할 때 1대 1로 영속성 컨텍스트가 하나 만들어지고, EntityManager를 통해 영속성 컨텍스트에 접근할 수 있다. EntityManager 클래스의 persist(), find(), remove() 등의 메서드를 통해 영속성 컨텍스트에 접근하여 데이터를 핸들링할 수 있다. 이 영속성 컨텍스트의 이점으로는 대표적으로 1차 캐시, 동일성 보장, 쓰기 지연, 변경 감지, 지연 로딩 5가지가 있다.이 개념들은 아래서 다시 알아보고,..
[Spring / 스프링 부트 핵심 가이드] 디자인 패턴 정리
·
[ Computer Science ]/프로그래밍 이론
각 디자인 패턴들에 대해 공부하고 정리할 때마다 정리한 글의 링크를 첨부할 예정이다. 디자인 패턴이란? 디자인 패턴은 소프트웨어를 설계할 때 자주 발생하는 문제들을 해결하기 위한 해결책들이다. 상황에 맞는 최적의 디자인 패턴을 결정해서 사용하는 것이 좋다. [ GoF 디자인 패턴 ] 대표적인 디자인 패턴 분류 방식이다. (GoF는 디자인 패턴을 구체화하고 체계화해서 분류한 4명의 인물을 의미한다.) GoF 디자인패턴 분류 방식에 따르면 크게 3가지로 구분된다. 생성 패턴 객체 생성에 사용되는 패턴으로, 객체를 수정해도 호출부가 영향을 받지 않게 한다. 구조 패턴 객체를 조합해서 더 큰 구조를 만드는 패턴이다. 행위 패턴 객체 간의 알고리즘이나 책임 분배에 관한 패턴이다. 객체 하나로는 수행할 수 없는 작..