Tech258 스프링 트랜잭션 전파 속성 개요스프링에서 Transaction Propagation은 트랜잭션의 경계에서 이미 진행중인 트랜잭션이 있을 때 또는 없을 때 어떻게 동작할 것인가를 결정하는 기능이다. 예를 들어, @Transacional 어노테이션이 존재하는 메서드를 호출했을 때, 기존에 트랜잭션이 존재하면 재사용하지 혹은 예외를 던질지 등의 행동을 결정할 수 있다.이러한 트랜잭션의 전파 속성에는 REQUIRED, REQUIRED_NEW, MANDATORY, SUPPORTS, NOT_SUPPORTED, NESTED, NEVER가 존재하며, 각각은 @Transactional 어노테이션의 propagation 속성에 값을 설정함으로써 동작시킬 수 있다.물리 트랜잭션과 논리 트랜잭션물리 트랜잭션: 실제 데이터베이스에 적용되는 트랜잭션으로 .. 2025. 10. 4. Value Object 개요Value Object란 도메인 모델에서 식별자가 필요하지 않고, 속성 및 값으로 구별되는 오브젝트를 말하는데, 대표적으로 Integer, Decimal, Date, Long 등이 있다.특징엔티티가 너무 많은 책임을 가지는 것을 방지하게 하여, 특정 속성 관련 행위를 분리해서 엔티티를 더 집중된 상태로 유지하게 한다.원시 타입(예: int, long 등)보다 도메인 개념을 더 명시적으로 나타내서 모델의 명확성을 높인다.생성 이후에 상태가 변하지 않고, 변경이 필요하면 새로운 객체로 교체한다. (불변성 - immutable)풍부한 기능을 가진다.자체 유효성 검사도 가능하다.값 비교는 == 대신에 equals()로 비교한다. 이때, 값이 같으면 같은 객체로 간주한다.동등성 기준으로 비교하기 때문에 equ.. 2025. 10. 4. Spring MVC와 NestJS의 HTTP 요청 흐름 차이 Spring MVC 전체 요청 처리 흐름클라이언트 요청DispatcherServiet : Spring MVC의 핵심 프론트 컨트롤러로 모든 요청을 받는다.HandlerMapping : URL, HTTP 메서드 기반으로 적절한 컨트롤러(Handler)를 찾는다.HandlerInterceptor (preHandle) : 요청 전에 동작하는 인터셉터로 인증, 로깅, 권한 확인 등에 사용된다. 이때, false 반환시에는 처리를 중단한다.HandlerMethodArgumentResolver (요청 -> 컨트롤러 파라미터 바인딩) : 컨트롤러 메서드 파라미터에 값을 바인딩해준다. 예를들어, @RequestParam, @RequestBody, @CurrentUser 등이 있다.Controller (핸들러 메서드 실.. 2025. 10. 4. Spring Transaction AOP 동작 흐름 정리 개요@Transactional 어노테이션을 사용한 선언적 트랜잭션 관리(Declarative Transaction Management)의 전체 흐름에는 크게 트랜잭션 매니저, 트랜잭션 AOP 프록시, 트랜잭션 동기화 매니저 3가지 요소가 등장한다.동작 흐름클라이언트 코드로부터 요청이 들어오면 트랜잭션 AOP proxy가 트랜잭션 매니저를 획득하고, 트랜잭션을 시작하기 위해서 트랜잭션 매니저에게 요청한다.트랜잭션 시작 요청을 받은 트랜잭션 매니저는 데이터소스를 통해 커넥션을 받아오고 트랜잭션을 시작한다.트랜잭션 매니저는 시작된 커넥션을 동기화 매니저에 보관한다.이후 트랜잭션이 종료되는 경우, 트랜잭션 매니저는 트랜잭션 동기화 매니저에 보관한 커넥션을 가져와 트랜잭션을 종료하고 커넥션을 반환하거나 종료한다... 2025. 10. 4. GitHub Codespaces 개요 Github Codespaces란 Github에서 제공하는 클라우드 개발환경이다. 동작방식은 기본적으로 Docker 컨테이너 위에 Ubuntu 이미지로 생성된다. 또한 접속 방식은 브라우저, VSCode, JetBrains Gateway, Github CLI 등이 있다. 요금 정책 계정별 요금 정책 사양에 따른 요금 부과 정책 생성 방법 이미 생성되었거나 생성할 repository에서 Codespaces 카테고리를 선택한 후, Create codespace on main 버튼을 클릭한다. Codespaces 관리 Stop codespace를 통해 컨테이너를 중지시킬 수 있다. Change machine type을 통해 컨테이너의 성능을 변경시킬 수 있다. 참조 https://docs.github.c.. 2024. 2. 28. docker에 ubuntu 설치 및 nginx, php, mysql 웹 서버 개발환경 세팅 우선 나의 경우, mac 환경에서 docker를 이용해서 ubuntu 22.04를 띄우고, 이 위에서 개발 환경을 세팅했다. 기본적인 docker 명령어 docker images 확인 docker images -a docker image 삭제 docker rmi 'image name' 실행중인 컨테이너 확인 docker ps -a 컨테이너 실행 docker start 컨테이너ID 컨테이너 중지 docker container stop 'container ID' 컨테이너 삭제 docker container rm 'container id' 컨테이너 접속 docker exec -it 컨테이너ID /bin/bash 호스트-컨테이너 작업 폴더 복사 docker cp 컨테이너이름:컨테이너내경로 호스트내경로 그럼 먼저.. 2023. 12. 8. 이전 1 2 3 4 ··· 43 다음