본문 바로가기

스프링/기본지식3

@Transactional 어노테이션에 대한 작동방식 1. @Transactional이란@Transactional은 Spring에서 제공하는 선언적 트랜잭션 관리 방식입니다. 이 어노테이션 하나로 다음과 같은 복잡한 트랜잭션 처리 코드들을 자동으로 처리할 수 있습니다:데이터베이스 커넥션 획득트랜잭션 시작 (setAutoCommit(false)) (비즈니스 로직 실행)정상 완료시 커밋 또는 예외 발생시 롤백커넥션 반환2. @Transactional 동작 원리@Transactional의 동작은 Spring AOP를 기반으로 합니다.프록시 객체는 다음과 같은 트랜잭션 관련 코드를 자동으로 삽입합니다:1) 메서드 호출 전데이터베이스 연결 (Connection 객체 생성).트랜잭션 시작 (setAutoCommit(false)).트랜잭션 동기화 (현재 트랜잭션 정보.. 2024. 12. 16.
서블릿 컨테이너와 스프링 컨테이너의 완벽한 이해 1. 웹 애플리케이션의 기본 구조 이해하기1.1 Web Server와 WAS의 구분Web ServerApache, Nginx와 같은 서버HTML, CSS, JavaScript 등 정적 파일 제공간단한 요청-응답 처리빠른 처리 속도가 장점WASWeb Server + web ContainerTomcat, JBoss와 같은 서버비즈니스 로직 처리데이터베이스 연동동적 컨텐츠 제공1.2 Web Server와 Web Container가 같이 있을 경우WAS는 웹 서버의 기능을 포함하기 때문에 웹 서버의 기능을 제공할 수 있다.WAS와 DB만으로도 시스템 구성이 가능하지만, WAS가 너무 많은 기능을 담당해 서버 과부하의 우려가 생긴다.정적 컨텐츠의 요청까지 WAS가 처리한다면 정적 데이터 처리로 인해 서버에 부하가.. 2024. 12. 13.
OSIV OSIV(Open Session In View)OSIV(open session in view) 는 영속성 컨텍스트를 뷰까지 열어둔다는 의미입니다. 영속성 컨텍스트가 살아있으면 엔티티는 영속 상태로 유지될 수 있어, 뷰에서도 지연 로딩을 사용할 수 있어요. OSIV의 핵심은 뷰에서도 지연 로딩이 가능하도록 하는 것입니다. 가장 단순한 구현은 클라이언트 요청이 들어올때 필터나 인터셉터에서 트랜잭션을 시작하는 방법인데요. 이를 트랜잭션 방식 OSIV라고 합니다. 하지만, 트랜잭션 방식 OSIV는 표현 계층에서도 엔티티를 수정할 수 있기 때문에 유지보수하기 어려운 코드를 만들 수 있습니다.트랜잭션 방식의 OSIV의 문제는 어떻게 풀어볼 수 있을까요? 🤔최신 방식의 OSIV는 트랜잭션 방식의 문제를 해결합니다... 2024. 12. 10.