목록STUDY/Spring (22)
공부해봅시당

1차 캐시와 2차 캐시 1차 캐시(First Level Cache)영속성 컨텍스트(Persistence Context)의 내부에는 엔티티를 보관하는 저장소가 있는데, 이것을 `1차 캐시(First Level Cache)`라고 부른다. 그래서 1차 캐시는 트랜잭션이 시작하고 종료할 때까지만 유효하다.즉, 트랜잭션 단위의 캐시이다.따라서 애플리케이션 전체로 보면 데이터베이스 접근 횟수를 획기적으로 줄이지는 못한다. 1차 캐시 특징- 1차 캐시는 영속성 컨텍스트 내부에 있음 -> 따라서 1차 캐시는 활성화하거나 비활성화할 수 있는 옵션이 아니고, 영속성 컨텍스트 자체가 사실상 1차 캐시임- 엔터티 매니저로 조회하거나 변경하는 모든 엔터티는 1차 캐시에 저장됨- 트랜잭션을 Commit 하거나 Flush를 하게..

JPA 영속성 컨텍스트(Persistence Context)JPA 영속성 컨텍스트란 엔터티를 영구 저장하는 환경이라는 뜻으로, 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다.EntityManager에 엔티티를 저장하거나 조회하면 EntityManager는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. Entity를 영속성 컨텍스트에 저장하는 코드로, 해당 코드는 DB에 저장이 안 된 상태이다. (트랜젝션이 끝나야 DB에 반영함)entityManager.persist(entity); 특징- 영속성 컨텍스트는 논리적인 개념- 영속성 컨텍스트는 엔터티 매니저를 생성할 때 하나 만들어짐, 엔터티 매니저를 통해 영속성 컨텍스트에 접근하고 관리할 수 있음- 스프링에서 En..

역사를 통해 알아보는 Servlet의 탄생 1. [초창기] 정적 데이터만 전달하는 Web Server 정적 데이터란? 쉽게 말해 어떤 사용자가 들어와도 같은 화면이라는 뜻 아래 사이트를 들어가보면 어떤 사용자가 들어와도 모두 같은 화면만 보여주게 되는데, 대표적인 정적 페이지만 보여주는 웹사이트의 예시라고 할 수 있겠다. 어떤 문제가 있나? 위 정적페이지 만으로도 충분히 정보를 잘 전달하고 있다. 하지만 우리가 들어갈 때마다 나만의 정보를 받고 싶다면? 당장 쇼핑몰 사이트를 통해 옷을 구매하고 싶어도 로그인을 거쳐 나라는 사용자로 커스텀된 정보들을 받아야 한다. 하지만 위에서는 정해진 정보들만 주기 때문에 불가능하다. 2. [그렇다면 동적인 데이터를 줄 수 있도록 해보자!] CGI(Common Gatew..

AOP의 개념에 대해 쉽게 이해하고 싶은 사람은 링크를 참조하길 바람 목차 1. AOP(Aspect Oriented Programming)란? 2. AOP와 프록시 패턴 3. 프록시 패턴의 단점 해결: 다이내믹 프록시 4. 다이내믹 프록시 단점 해결: 프록시 펙토리(Proxy Factory) 5. 아직도 귀찮다. 더 자동화해보자: 자동 프록시 생성기(Automatic Proxy Creator) 1. AOP(Aspect Oriented Programming, 관점 지향 프로그래밍)란? 전통적인 객체지향 기술의 설계 방법(추상화와 메서드 추출 등)으로는 독립적인 모듈화가 불가능한 부가기능을 모듈화 하기 위해 Aspect(관점)라는 개념을 도입함 1-1. Aspect를 통한 부가기능 분리 아래의 그림을 살펴보..

1. 프록시(Proxy)란? 용어 프록시(Proxy) 정의 대리자 라는 뜻으로, 클라이언트가 사용하려고 하는 실제 대상인 것처럼 위장해서 클라이언트의 요청을 받아주는 역할 특징 - 실제 대상인 것처럼 위장함으로서 이를 사용하는 클라이언트는 구체 클래스를 알 필요가 없어짐 - 클라이언트의 요청을 받아서 원래 요청 대상에게 바로 넘겨주는 게 아닌, 다양한 부가기능을 지원할 수 있음 타깃 여기서 원래 요청하려는 대상, 즉 최종적으로 요청을 위임받아 처리하는 실제 오브젝트 프록시의 조건 클라이언트의 요청을 대리로 수행해주는 모든 객체가 프록시 인것은 아님 객체가 프록시가 되려면 클라이언트는 요청을 보낸 대상이 타깃인지 프록시인지 구분을 할 수 없어야 함 즉, 타깃과 프록시는 같은 인터페이스를 확장해야 함 (CG..

목차 1. 스프링 빈(Spring Bean)이란? 2. Spring Bean을 Spring IoC Container에 등록하는 방법 - 2가지 3. 스프링 빈 스코프 4. 스프링 빈 생명주기 1. 스프링 빈(Spring Bean)이란? Spring IoC 컨테이너가 관리하는 자바 객체를 빈(Bean)이라고 부름 제어의 역전 (IOC, Inversion Of Control)의 특징은 아래와 같음 일반적으로 처음에 배우는 자바 프로그램(IoC가 적용되지 않은 경우) 각 객체들이 프로그램의 흐름을 결정하고 각 객체를 직접 생성하고 조작하는 작업(객체를 직접 생성하여 메소드 호출)을 했음 즉, 모든 작업을 사용자가 제어하는 구조 예를 들어 A 객체에서 B 객체에 있는 메소드를 사용하고 싶으면, B 객체를 직접 ..

필터(Filter) [ 필터(Filter)란? ] J2EE 표준 스펙 기능 디스패처 서블릿(Dispatcher Servlet)에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공 디스패처 서블릿은 스프링의 가장 앞단에 존재하는 프론트 컨트롤러이므로, 필터는 스프링 범위 밖에서 처리가 되는 것 즉, 스프링 컨테이너가 아닌 톰캣과 같은 웹 컨테이너(서블릿 컨테이너)에 의해 관리가 되는 것이고(스프링 빈으로 등록은 됨), 디스패처 서블릿 전/후에 처리하는 것 이러한 과정을 그림으로 표현하면 다음과 같음 [ 필터(Filter)의 메소드 ] 필터를 추가하기 위해서는 javax.servlet의 Filter 인터페이스를 구현(implements)해야 하며 이는 다음..
@SpringBootTest와 @DataJpaTest @SpringBootTest와 @DataJpaTest는 스프링 부트(Spring Boot) 테스트를 위한 어노테이션 기준 @SpringBootTest @DataJpaTest 정의 스프링 부트 애플리케이션의 통합 테스트를 위한 어노테이션 전체 스프링 컨텍스트를 로드함 JPA 컴포넌트에 집중된 테스트를 위한 어노테이션 JPA 관련 설정만 로드하여 빠른 실행을 도움 공통점 스프링 테스트 컨텍스트 프레임워크를 사용하여 스프링 기반 테스트 지원 차이점 - 전체 스프링 애플리케이션 컨텍스트 로드 - 더 무거운 테스트 실행 - 오직 JPA 관련 구성요소만 로드 - 데이터베이스와 관련된 설정, DAOs, JPA repositories 등에 초점 장점 - 실제 애플리..