Spring (8) 썸네일형 리스트형 [Spring] 절차지향/객체지향/함수형 프로그래밍 & 시간복잡도/공간복잡도 Q. 절차지향 / 객체지향 / 함수형 프로그래밍이란 무엇이고 차이점은 무엇인가? 절차지향 프로그래밍은 프로그램의 순서와 흐름을 먼저 세우고, 필요한 자료구조와 함수들을 설계하는 방식입니다. 대표적인 프로그래밍 언어로 C, Visual Basic, Fortran, Pascal이 있습니다. 특징 하나의 큰 기능을 처리하기 위해 작은 단위의 기능들로 나누어 처리하는 Top-Down 접근 방식으로 설계된다. 데이터와 함수를 별개로 취급한다. 모든 함수는 데이터 공유가 가능하다. 정해진 순서대로 입력해야 하므로 순서가 바뀌면 결과를 도출하기 어렵다. 프로그램이 커질수록 구조가 복잡해져 유지보수가 어렵다. (소형 프로젝트에 적합) 객체지향 프로그래밍은 자료구조와 이를 중심으로 한 모듈들을 먼저 설계한 다음에, 이들.. [Spring] 웹서버(WS)와 WAS & 자료구조 Q. 웹 서버와 WAS의 차이는? WS 웹 서버 정적인 파일을 제공하기 위한 서버로 Http 프로토콜에 의해 제공 정적인 파일로만 처리 가능한 것은 Was로 넘기지 않고 WS에서 처리 대표적인 예로 apache, nginx, gws 등이 있다. WAS 웹 애플리케이션 서버 동적 데이터를 제공하기 위한 서버 웹 서버에서 처리할 수 없는 동적 정보를 처리하여 웹서버에 제공 일반적으로 웹서버의 기능을 내제하고 있어 웹 서버 없이도 서비스가 가능 WAS와 DB가 연결되어 WAS에서 처리에 필요한 데이터를 꺼내와 원하는 정보로 가공 1. 웹 서버로부터 요청이 들어오면 제일 먼저 스프링 컨테이너가 이를 알맞게 연산 처리한다. 2. 컨테이너는 배포 서술자를 참조하여 해당 서블렛에 대한 스레드를 생성하고 요청 http.. [Spring] 트랜잭션 & TCP와 UDP Q. 트랜잭션이 무엇인지 설명해 주세요. 트랜잭션은 데이터베이스 상태를 변화시키기 위해 수행하는 작업의 단위를 말한다. 상태를 변화시킨다는 것은 데이터베이스에서 SQL 질의어(Select, Insert, Delete, Update)를 통해 DB에 접근하는 것을 의미한다. 작업 단위는 사람이 정하는 기준에 따라 정해진다. 예를들어 블로그에 글을 작성하고 업데이트 된 목록을 본다면, 글을 create하고 update하는 작업이 모두 수행되어야 하나의 작업 단위가 되는 것이다. [트랜잭션의 4가지 원칙] 원자성(Atomicity) 한 트랜잭션 내에서 실행한 작업들은 하나의 단위로 처리한다. 모두 성공해 DB에 반영되거나, 실패해 전혀 반영되지 않아야 한다. 일관성(Consistency) 트랜잭션은 일관성 있는.. [Spring] 의존성 주입(DI) 의존성 주입(Dependency Injection)은 객체를 외부에서 주입하여 결합도를 낮추고 유연한 코드를 작성하는 디자인 패턴이다. 의존성 주입은 크게 생성자 주입, Setter 주입, 필드 주입으로 나뉜다. 1. 의존성 주입(DI)방식 3가지 1) 생성자 주입(Constructor Injection) 생성자 주입은 의존성 객체를 생성하는 시점에 주입하는 방식 생성자의 호출 시점에 1회 호출되는 것이 보장되어 주입받은 객체가 변하지 않거나, 객체의 주입을 강제할 수 있다. public class MyClass { private final MyData myData; public MyClass(MyData myData) { this.myData = myData; } } 2) Setter 주입(Setter.. [Spring] Rest Client & @SpringBootTest와 @WebMvcTest Q. Spring 에서 사용하는 Rest Client에 대해서 설명해 주세요. Rest API 서버에 HTTP 요청을 보낼 수 있는 클라이언트 툴 또는 라이브러리입니다. UI가 갖춰진 Rest Client 예 : Postman WebClient는 HTTP 요청을 수행하기 위한 비차단 반응형 클라이언트입니다. non-blocking I/O 반응성 스트림 적은 하드웨어 리소스로 높은 동시성 처리 Java 8 람다 활용하여 HTTP 요청 빌드 가능 동기 및 비동기 상호 작용 가능 서버로부터 스트리밍 데이터를 받거나 서버로 스트리밍 데이터 전송 가능 RestTemplate는 HTTP 클라이언트 라이브러리를 통해 더 높은 수준의 API를 제공합니다. 한 줄로 REST 엔드포인트를 호출할 수 있습니다. HTTP 인.. [Spring] JPA & 제네릭 Q. JPA의 영속성 컨텍스트에 대해서 설명해 주세요. 영속성 컨텍스트란 엔티티를 영구 저장하는 환경이라는 뜻입니다. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 합니다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리합니다. 트랜잭션이 끝나면 데이터베이스에 반영합니다. 특징 엔티티 매니저를 생성할 때 하나 만들어진다. 엔티티 매니저를 통해서 영속성 컨텍스트에 접근하고 관리할 수 있다. 영속성 컨텍스트는 엔티티를 식별자 값으로 구분하기 때문에 영속 상태는 식별자 값이 반드시 있어야 한다. JPA는 트랜잭션을 커밋하는 순간 영속성 컨텍스트에 새로 저장된 엔티티를 데이터베이스에 반영한다. (flush) 엔티티의.. [Spring] DI와 예외처리 Q. DI(Dependency Injection)에 대한 설명과 해당 기술의 장점에 대해 설명해주세요. DI(Dependency Injection)은 의존성 주입으로 객체를 직접 생성하는 것이 아니라 외부에서 생성한 후 주입시켜주는 방식입니다. 모듈 간 결합도는 낮아지고 유연성이 높아집니다. 의존관계 주입 방법에는 생성자를 이용하는 방법, Setter를 이용하는 방법, 필드 주입 방법이 있습니다. 생성자 주입은 생성자 호출 시점에 1회 호출되는 것이 보장됩니다. 따라서 주입받은 객체가 변하지 않거나, 반드시 객체의 주입이 필요한 경우 사용할 수 있습니다. Setter 주입은 주입받는 객체가 변경될 가능성이 있는 경우 사용합니다. 다만, 의존관계 주입의 변경이 필요한 상황은 거의 없기 때문에 생성자 주입을.. [Spring] @Transactional 어노테이션 스프링을 활용한 CRUD기능을 가진 블로그 API를 만들었다. Service에 get, create, update 하는 부분에 전부 @Transactional 어노테이션을 붙여주었는데, 이렇게 다 붙이는 게 맞는건가 싶어 Transactional에 대해 찾아보았다. Transaction이란? 트랜잭션은 데이터베이스 상태를 변화시키기 위해 수행하는 작업의 단위를 말한다. 상태를 변화시킨다는 것은 데이터베이스에서 SQL 질의어(Select, Insert, Delete, Update)를 통해 DB에 접근하는 것을 의미한다. 작업 단위는 사람이 정하는 기준에 따라 정해진다. 예를들어 블로그에 글을 작성하고 업데이트 된 목록을 본다면, 글을 create하고 update하는 작업이 모두 수행되어야 하나의 작업 단위.. 이전 1 다음