@Transactional 동작 과정
2024. 2. 28. 16:23
Spring
스프링은 @Transactional을 통해 트랜잭션을 관리한다. 스프링은 트랜잭션 처리를 TransactionManager를 통해서 처리한다. (인터페이스 PlatformTransactionManagere 사용) 사용법 1 TransactionTemplate : 트랜잭션을 세부적으로 걸기 위해 설정한다. - 스프링 IoC를 통해 설정 영역과 DB실행 코드가 분리되었다. - db커넥션을 개발자가 관리하지 않는다. 개발자는 트랜잭션 콜백 메서드만 구현한다. - 저수준 SQLException을 스프링에서 잡아 추상화된 런타임 에외로 포장한다. @Transactional은 dynamic proxy의 특징 (클래스 혹은 메서드 단위로만 사용해야하기 떄문에 세부적인 처리가 어렵다.) 만약 한 트랜잭션에 (주문 접수..
OSIV 동작 과정
2024. 2. 28. 14:32
Spring
OSIV 의 역할 트랜잭션의 외부에서 조회에 대한 지연로딩을 제공한다. SpringBoot AutoConfiguration 1. open-in-view를 활성화하면 JpaWebConfiguration이 활성화 2. OpenEntityManagerInViewInterceptor빈이 WebRequestInterceptor에 추가된다. 3. 웹으로부터 요청이들어오면 인터셉터의 prehandle() 메서드를호출해 요청을 받음 4. TransctionSyncronizationManager로 통해 현재 요청을 처리하는 스레드에 EntityManager를 생성한다. 그리고 EntityManager를 현제 스레드에 반영한다. => 이후 EntityManager의 라이프 사이클이 변환함 (트랜잭션과 EntityManag..

스프링을 공부한다면 이정도는 - 스프링 동작 원리
2024. 2. 3. 17:08
Spring
요청의 시작은 어디? 클라이언트의 요청 먼저 클라이언트가 요청을 보낼거다, 요청의 Header, Body로 이루어진 정보를 보낸다. (HttpInputMessage와 같은 정보들이 온다.) 그리고 요청 값은 웹 어플리케이션으로 이동한다. Web Context(Servlet Context) 웹 어플리케이션 - 클라이언트와 서버 사이에 HTTP 프로토콜을 이요해 데이터를 주고받으면서 동작하는 소프트웨어를 의미한다. - 흔히 우리는 WAS라고 알고 있는 개념이다. 동적인 정보를 처리해주는 역할을 한다. (DB정보 조작이나 다른 로직이 처리 가능) Tomcat 그림에서 DispatcherServlet에 도착하기 전에 있는 정보들을 의미한다. 서블릿 컨텍스트(웹 컨텍스트)에 도착한다. 이곳에서는 Spring 컨테..
상속 관계 매핑을 넘어..
2023. 3. 24. 14:35
Spring
고급 매핑 전략으로 책에서 소개가 될 만큼 상속관계는 관계형 데이터베이스에서 사용하면 이점이 많은 전략이다. 하지만, 어떤 부분에서는 상속관계도 부족한 점이 없지않아 있다고 생각한다. 이는 뒤에서 설명해보려고 한다! 우선, 상속 관계 매핑 전략에 대해 조금 알아본 이후 내가 채택한 방법을 생각해보자. 관계형 DB는 원래 상속이라는 개념이 없다. 하지만 슈퍼타입과 서브타입 관계라는 모델링 개념이 있어 이를 사용한다. 그래서 ORM에서는 객체의 상속 구조와 데이터베이스의 슈퍼타입 서브타입 관계를 매핑하는 것을 상속 관계 매핑라고 한다. 상속 관계는 대표적으로 3가지 전략이 있다. 간략이 요점들만 설명하고 넘어가겠다 조인전략 엔티티 각각을 모두 테이블로 만들고 자식이 부모 테이블의 기본 키를 받아 사용하는 전..

JPA 영속성 컨텍스트와 엔티티 생명주기
2023. 3. 6. 14:49
Spring
JPA 영속성 컨텍스트(Persistance Context) 영속성 컨텍스트는 인스턴스로 존재하는 엔티티를 관리하고 DB에 접근하는 논리적인 영역을 의미한다. 여기서 주의해야할 점은, DB에 내용이 바로 저장되는 게 아니라 저장될 준비를 하는 곳이다! 영속성 컨텍스트는 엔티티를 관리하고 필요에 따라 DB의 데이터를 저장, 조회, 수정, 삭제할 수 있다. 이를 담당하는 객체 EntityManager 엔티티 매니저(Entity Manager) 엔티티 매니저는 영속성 컨택스트에서 엔티티를 관리한다. JPA에서 제공하는 인터페이스로 스프링 빈으로 등록되어 있다. 엔티티 캐시를 가지고 있다. 영속성 컨텍스트의 영역 1차 캐시 저장소 영속성 컨텍스트가 관리하는 엔티티 정보 보관소, 이 보관소에 들어 있는 것이 '영..
일급 컬렉션이란?
2023. 2. 1. 15:07
Spring
Collection 객체를 감싸면서 ,감싼 컬렉션 외의 다른 멤버 변수가 없는 클래스 이게 무슨 의미일까? Collection 객체를 감싼다는 것은 다음과 같다. public class Menu { private final String serialNumber; private final String menuName; private final int price; public Menu(String serialNumber, String menuName, int price) { this.serialNumber = serialNumber; this.menuName = menuName; this.price = price; } //... } Menu 클래스를 Menus라는 클래스에 담는다. public class Me..