4 계층 아키텍처4계층 아키텍처는 소프트웨어 시스템을 4개의 주요 계층으로 나누는 구조적 패턴입니다.이 방식은 ‘관심사의 분리’라는 핵심 원칙을 따르며, 각 계층이 특정 역할을 담당하도록 설계됩니다.각 계층 살펴보기1. Presentation Layer사용자와 직접 상호작용하는 최상위 계층입니다.사용자 인터페이스 (UI) 구현사용자 입력 처리 및 기본적인 유효성 검사다른 계층에서 받은 데이터를 사용자에게 표시2. Business Layer애플리케이션의 핵심 로직이 구현되는 곳입니다.비즈니스 규칙 및 워크플로우 관리데이터 처리 및 연산 수행프레젠테이션 계층과 영속성 계층 사이의 중재자 역할3. Persistence Layer데이터의 영구 저장을 담당하는 계층입니다.데이터베이스와의 통신 관리CRUD 작업 수..
애그리거트(Aggregate)란?애그리거트는관련된 객체들의 집합을 하나의 단위로 취급하는 패턴입니다.즉, 도메인 모델에서 밀접하게 관련된 객체들의 집합을 의미합니다. 이는 복잡한 도메인을 더 작고 관리하기 쉬운 단위로 나누는 데 도움을 줍니다.애그리거트의 주요 목적도메인 모델의 복잡성 감소데이터 일관성 유지트랜잭션 경계 정의애그리거트의 구조애그리거트는 다음과 같은 구조로 이루어져 있습니다애그리거트 루트: 애그리거트의 대표 엔티티로, 외부에서 애그리거트에 접근할 수 있는 유일한 진입점입니다.엔티티: 고유한 식별자를 가진 객체들입니다.값 객체: 식별자가 없고 불변성을 가진 객체들입니다.애그리거트 설계 원칙불변식 보호: 애그리거트 내부의 모든 불변식(invariants)은 항상 일관된 상태를 유지해야 합니다...
Spring Security를 사용하는 애플리케이션에서 테스트를 작성할 때, 인증된 사용자 컨텍스트를 사용해야 하는 경우가 있습니다. Spring Security는 이를 위해 다음과 같은 어노테이션을 지원합니다.`@WithMockUser``@WithUserDetails``@WithSecurityContext`@WithMockUser`@WithMockUser`는Spring Security 테스트를 위한 가장 기본적인 어노테이션입니다.@Test@WithMockUserpublic void testSecuredMethod() { // 테스트 코드}특징실제 사용자 데이터 없이도 테스트가 가능합니다.기본적으로 필드는 다음과 같이 설정됩니다.`username` : "user"`password` : "passwo..
트랜잭션의 격리 수준이란,여러 트랜잭션이 동시에 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 말지를 결정하는 것입니다.격리 수준은 크게 아래의 4가지로 나뉩니다.READ UNCOMMITTEDREAD COMMITTEDREPEATABLE READSERIALIZABLE아래로 갈수록 각 트랜잭션 간의 데이터 격리(고립) 정도가 높아지며, 동시 처리 성능도 떨어집니다.일반적인 서비스 용도의 데이터베이스는 READ COMMITTED와 REPEATABLE READ 중 하나를 사용합니다.Oracle : 주로 READ COMMITTEDMySQL : 주로 REPEATABLE READ1. READ UNCOMMITTEDREAD UNCOMMITTED 격리 수준에서는각 트랜잭션..
HTTP 개요HyperText Transfer Protocol로Web의 애플리케이션 계층 프로토콜입니다.클라이언트(브라우저)와 서버 간의 Request-Response 모델을 사용합니다.HTTP는 TCP를 사용하며, 기본적으로 80번 포트를 사용합니다.HTTP는 상태를 유지하지 않는 Stateless한 프로토콜입니다.Stateless Protocol어떠한 이전 요청과도 무관한 각각의 요청을 독립적인 트랜잭션으로 취급하는 통신 프로토콜HTTP의 연결 유형HTTP의 연결 유형에는 2가지 있습니다.Non-persistent HTTP : HTTP/1.0각 객체마다 별도의 TCP 연결을 사용하는 방식입니다.연결 설정, 객체 전송, 연결 종료의 과정으로 이루어집니다.따라서, 여러 Object를 다운로드하기 위해서는..