Spring Framwork10 Dirty Checking Dirty Checking 개념 Dirty checking 트랜잭션 내에서 Entity에 변경 사항이 일어났을 때 자동으로 DB에 반영 작동 원리 JPA dirty checking JPA에서는 트랜잭션 내에서 Entity에 변경 사항이 일어났을 때 자동으로 update 쿼리를 날려 반영 동작 방식 JPA에서 트랜잭션이 실행 Entity를 조회 조회된 Entity의 스냅샷 저장 Entity의 데이터 변경 트랜잭션 커밋 후 스냅샷과 현재 Entity를 비교 변경 사항을 update 쿼리로 구성 및 실행 특징 실행 대상 dirty checking 검사 대상은 영속성 컨텍스트에 저장된 Entity 준영속, 비영속 Entity는 DB에 반영되지 않는다. @DynamicUpdate dirty checking은 변경.. 2023. 5. 7. Transaction Propagation Transaction Propagation 개념 JPA 전파 단계 트랜잭션이 다른 트랜잭션을 실행할 경우 어떻게 처리하는지에 대한 개념 종류 REQUIRED 기본 DEFAULT로 설정되어 진행중인 트랜잭션이 있다면 해당 트랜잭션을 사용하고 없으면 생성 REQUIRES_NEW 항상 새로운 트랜잭션 생성 진행 중인 트랜잭션이 있는 경우 중지하고 새로운 트랜잭션을 생성하고 끝나면 기존 트랜잭션 실행 SUPPORTS 트랜잭션을 필요하지 않는다. 기존 트랜잭션이 있다면 사용 NOT_SUPPORTS 트랜잭션을 필요하지 않는다. 기존 트랜잭션이 있다면 중지하고 작업이 끝나면 기존 트랜잭션 다시 실행 MANDATORY 트랜잭션이 항상 필요 실행 중인 트랜잭션이 없다면 예외 발생 NEVER 트랜잭션이 항상 불필요 실행 .. 2023. 4. 1. JPA 영속성 컨텍스트 JPA 영속성 컨텍스트 영속성 컨텍스트 개념 엔티티를 영구적으로 저장하는 환경 애플리케이션과 데이터베이스 사이에 객체를 보관하는 가상의 DB 역할을 제공 엔티티 매니저를 통해 저장 및 조회 엔티티 생명 주기 비영속 객체는 생성되었지만 영속성 컨텍스트와 관련 없는 경우 영속 영속성 컨텍스트에 저장되어 관리되는 상태 준영속 영속성 컨텍스트에 저장되었다 더 이상 관리되지 않는 상태 detach()를 통해 준영속으로 만들 수 있고, clear()나 close()를 통해 컨텐츠를 비우거나 종료해도 준영속으로 속한다. 삭제 영속성 컨텍스트와 데이터베이스에서 삭제 remove()를 통해 구현 영속성 컨텍스트 특징 1차 캐시 영속성 컨텍스트 내에 엔티티를 저장하는 공간 키는 식별자, value는 인스턴스 객체를 추가할.. 2023. 3. 31. CORS Solution CORS 개념 Origin URL(protocol, host, port, path, query string, fragment)에서 protocol, host, port까지가 origin에 해당 SOP(Same Origin Policy) 같은 출처 정책으로 다른 출처로의 리소스 요청을 제한하는 보안 정책 CORS(Cross Origin Resource Sharing) 다른 출처로의 요청을 예외적으로 허용하는 정책 CORS Issue를 해결하는 방법 CorsFilter 생성 @Component를 붙이고 Filter 인터페이스를 구현하는 클래스 생성 doFilter 메서드를 오버라이딩하고 내용 수정 파라미터로 들어오는 ServletRequest, ServletResponse 객체를 HttpServletRequ.. 2023. 3. 29. 이전 1 2 3 다음