본문 바로가기

전체 글

(24)
[JPA] hibernate.ddl-auto 설정 숙박 예약 프로젝트를 진행하면서 숙소 관련 부분에서 Repository 테스트를 작성했다.@DataJpaTest@ActiveProfiles("test")@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)class AccommodationRepositoryTest { @Autowired private AccommodationRepository accommodationRepository; private Accommodation accommodation; @Test @DisplayName("카테고리를 통한 숙소 데이터 찾기") void findByCategory_ShouldReturnAccom..
비연결성(Connectionless)과 무상태(Stateless) [ Stateless vs Connectionless ] Stateless (무상태성): 클라이언트와 서버 사이에 상태를 유지하지 않는다는 뜻 필요한 상태에 대한 정보를 클라이언트가 가지고 오기 때문에 클라이언트의 요청에 어느 서버가 응답해도 상관 없다. 따라서 클라이언트의 요청이 대폭 증가하면 서버를 증설해 해결할 수 있다. Connectionless (비연결성): TCP/IP 커넥션 연결을 지속하지 않는다는 뜻이다 클라이언트가 서버에 요청을 하고 응답을 받으면 바로 TCP/IP 연결을 끊어 연결을 유지하지 않음으로써 서버의 자원을 효율적으로 관리하고 수 많은 클라이언트의 요청에 대응할 수 있게 한다. 즉, 무상태성은 클라이언트와 서버 간에 상태 정보를 들고있지 않아 클라이언트가 상태 정보를 일일히 h..
@Configuration이 없을 때의 싱글톤 @Configuration 을 붙이면 생성된 빈을 싱글톤으로 관리해주고 클래스 내에서 객체 생성 호출 시 싱글톤을 보장해준다. 그러나 붙이지 않는다면 생성된 빈을 싱글톤으로 관리는 해주지만 클래스 내에서 객체 생성 호출 시 싱글톤을 보장해주지는 않는다. 아래의 예시 코드로 정리해보았다. 먼저 클래스 내에서 객체 생성 호출 시 싱글톤을 보장해주지 않는 예시 코드다. // 설정 정보를 읽어서 @Bean이 붙은 메서드 목록을 저장한다. // 메서드 목록을 하나씩 실행하며 반환되는 객체를 빈으로 등록한다. public class AppConfig { @Bean public MemberService memberService() { // MemberServiceImpl 객체는 스프링 빈으로 등록되지만, // 의존 ..
토이 프로젝트 1 - 여행과 여정 정보를 기록하고 조회하는 Java 애플리케이션 개발 최종 구현 목표가 "여행 여정을 기록과 관리하는 SNS 서비스" 인 토이 프로젝트가 시작 되었다. 프로젝트를 되돌아 보고 내가 작성한 코드들을 스스로 다시 리뷰할 겸 작성하는 게시물이다. [Toy 프로젝트 1 단계 달성 목표] Java 문법, 파일 입출력, 예외 처리, 클래스 설계 여행의 여정 정보를 기록하고 조회하는 Java 애플리케이션 개발 개별 여행은 복수의 여정 정보로 구성됨 (여행 : 여정 = 1 : n) 여정 정보는 이동 (출발지, 도착지, 출발 시각, 도착 시각)과 숙박(체크인, 체크 아웃) 등의 유형이 있을 수 있음 여행 정보와 특정 여행 정보의 여정 목록은 데이터 저장 경로에 JSON 파일 형태로 저장 JSON 파일의 예시는 다음과 같다. { "trips" : [ { "trip_id" :..
빅오 표기법(Big O notation) 빅오 표기법(Big O notation)은 알고리즘의 시간 복잡도나 공간 복잡도를 나타내기 위해 사용되는 수학적 표현 방식이다. 이 표기법은 알고리즘이 입력 데이터에 대해 어떻게 확장되는지를 나타내며, 최악의 경우의 성능을 대략적으로 표현한다. O(1) - 상수 시간 설명 : 입력 데이터의 크기와 상관없이 알고리즘의 실행 시간이 일정하다. 예시 : 배열에서 특정 인덱스의 요소에 접근하는 경우. 배열의 크기와 관계없이 하나의 연산만으로 원하는 요소를 얻을 수 있다. int[] array = {1, 2, 3, 4, 5}; int getElement(int index) { return array[index]; } O(n) - 선형 시간 설명 : 입력 데이터의 크기에 비례하여 실행 시간이 증가한다. 예시 : 배..
REST API vs WebSocket API REST API 기반 프로토콜 : HTTP(S), 상태를 유지하지 않는(stateless) 프로토콜을 사용한다. 통신 방식 : 클라이언트가 서버에 요청(request)을 보내고, 서버가 그 요청에 대한 응답(response)을 반환하는 단방향 통신이다. 특징 : 각 요청은 독립적이며, 서버는 클라이언트의 이전 요청에 대한 정보를 저장하지 않는다. CRUD(Create, Read, Update, Delete) 작업에 적합하다. RESTful API는 자원(resource) 기반의 구조를 가지며, URL을 통해 자원을 명시하고 HTTP 메서드 (GET, POST, PUT, DELETE 등)를 사용하여 해당 자원에 대한 행동을 정의한다. 사용 사례 : 웹 서비스의 일반적인 데이터 교환, 웹 페이지의 초기 로딩..
프로토콜과 API 프로토콜 : 주문의 규칙 프로토콜 (Protocol)은 컴퓨터 또는 기기들이 서로 통신하기 위해 사용하는 규칙이나 절차다. 커피숍에서 커피를 주문할 때, 우리는 특정한 방식으로 주문한다. 예를 들어, 줄을 서서 차례를 기다리고, 직원에게 메뉴를 선택하여 주문하며, 결제를 한다. 이 모든 과정은 커피숍에서 정한 '주문 규칙'에 따른 것이다. 인터넷에서 데이터를 주고받을 때도 비슷한 규칙이 적용되며, 이러한 규칙을 우리는 '프로토콜'이라고 한다. 예를 들어, 웹사이트에 접속할 때 사용하는 HTTP, 파일을 전송할 때 사용하는 FTP 등이 프로토콜의 예이다. API : 주문을 돕는 메뉴판 API (Application Programming Interface)는 어떤 프로그램이나 서비스가 다른 프로그램이나 서비..
추상 클래스 vs 인터페이스 분명 목적에 따라 쓰임이 분명히 다르지만 너무도 헷갈리고 고민되는 두가지를 가져왔다. 각각 어떤 것인지 알아보자. 추상 클래스 (Abstract Class) 추상 클래스(Abstract Class)는 추상 메서드를 선언해 놓고 상속을 통해 자식 클래스에서 메서드를 완성하도록 유도하는 클래스이다. 이러한 특성 탓에 미완성 설계도라고 표현하기도 한다. 추상클래스는 상속을 위한 클래스이기 때문에 따로 인스턴스를 생성할 수 없다. 추상 클래스는 일부 메서드가 구현되지 않고 선언만 되어 있는 클래스다. 이러한 메서드를 추상 메서드라고 한다. 추상 클래스는 상속을 통해 자식 클래스에서 추상 메서드를 구현하도록 강제한다. 추상 클래스는 상태(멤버 변수)를 가질 수 있다. 한 클래스는 하나의 추상 클래스만 상속받을 수..