Spring

개발자는 엔티티 매니저를 통해 영속성 컨텍스트에 접근할 수 있다고 이전 시간에 알아보았다. 그럼 엔티티 매니저는 정확히 무엇이며 어떤 역할을 할까?엔티티 매니저(Entity Manager)엔티티 매니저는 영속성 컨텍스트라는 메모리 공간을 관리하는 객체이다.  엔티티 매니저 팩토리(Entity Manager Factory)엔티티 매니저 팩토리는 엔티티 매니저 인스턴스를 생성하는 팩토리다. 💡왜 엔티티 매니저 팩토리는 팩토리 패턴으로 만들어 졌을까? 엔티티 매니저는 가벼운 객체지만, 이를 생성하는 데 필요한 메타데이터 초기화는 무거운 작업이다. 팩토리 패턴을 사용하면 이런 무거운 초기화 작업을 한 번만 수행하고, 이후에는 가벼운 엔티티 매니저 인스턴스를 효율적으로 생성할 수 있다. 팩토리 패턴은 애플리케이..
영속성 컨텍스트는 JPA에서 중요한 핵심 개념이라고 많이 들었는데 영속성 컨텍스트는 정확히 뭘까?영속성 컨텍스트영속성 컨텍스트는 '엔티티를 영구 저장하는 환경'으로, JPA가 관리하는 엔티티 객체의 집합이다. 엔티티 매니저를 통해 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 영속성 컨텍스트는 물리적으로 JVM 메모리(Heap 영역)에 할당되지만 개발자가 직접 접근할 수 없고, EntityManager를 통해서 간접적으로 사용하는 논리적인 개념이다. 영속성 컨텍스트는 Map 형태의 자료구조를 가지며 [ 키: @Id, 값: 엔티티 인스턴스 ] 형태를 띈다. `Map` 영속성 컨텍스트의 동작을 이해하기 위해선 엔티티 생명주기를 먼저 알아야 한다.엔티티의 생명주기비영속(n..
개발을 하다보면, 넣어 놓은 dump data로 테스트를 진행한다. 이 때, `ddl-auto: create`로 설정해 다 날리곤 했다.보통 `create`와 `update`만을 사용했는데, 다른 옵션은 어떤 것들이 있는지 궁금해졌다. ddl-auto란?`ddl-auto` 옵션은 스프링 부트 애플리케이션에서 Hibernate와 같은 JPA 구현체를 사용할 때 데이터베이스 스키마 관리를 제어하는 설정이다. 이 옵션은 `application.properties` 또는 `application.yml` 파일에서 설정하며, 각 옵션 값에 따라 데이터 베이스 스키마에 대해 다른 동작을 수행한다.  `ddl-auto` 옵션에는 `none`, `validate`, `update`, `create`, `create-dr..
JpaMetamodelEntityInformation의 isNew()public class JpaMetamodelEntityInformation extends AbstractEntityInformation implements JpaEntityInformation { private final Optional> versionAttribute; // 생성자와 다른 필드 및 메서드들... @Override public boolean isNew(T entity) { if(versionAttribute.isEmpty() // @Version 어노테이션이 적용된 필드가 없는지 확인 || versionAttribute.map..
· Spring
Spring에서 자주 사용하는 두 가지 어노테이션으로 @Controller와 @RestController가 있다. 기존 실습 때는 @Controller를 사용했고, 진행 중인 사이드 프로젝트에선 @RestController를 사용했다. 두 어노테이션의 차이를 알고 싶어 글을 작성하게 됐다. @Controller목적: View를 반환하기 위해 설계배경: Spring MVC 패턴을 구현하기 위해반환 값: View 이름(String)DispatcherServlet이 Client의 URL 형식인 요청 수신HandlerMapping이 적절한 Controller를 찾아 매핑선택한 Controller에게 HandlerAdapter가 역할 위임Controller는 받은 요청을 Service단에서 처리하고 View Na..
Spring Security 실습 중에, 클라이언트가 인증에 성공하면 SecurityContextHolder의 context에 authentication 객체를 저장하는 과정이 있었다. 'SecurityContextHolder는 어떤 일을 하는 녀석일까?' SecurityContextHolder의 쓰임 과정 미리보기클라이언트의 요청에 따라 서블릿 컨테이너는 요청을 처리할 스레드를 할당한다.할당받은 스레드를 사용해 필터 체인을 통과시켜 인증과정을 수행한다.인증에 성공하면 인증된 사용자의 객체(Authentication)를 SecurityContextHolder에 저장한다.  SecurityContextHolderAt the heart of Spring Security’s authentication mode..
Spring Security Architecture클라이언트가 요청을 보낸다 → 서블릿 컨테이너는 받은 HttpServletRequest를 처리해야할 필터 인스턴스들과 서블릿을 포함하는 FilterChain를 생성한다. 여기서의 FilterChain은 Spring Security Filter Chain이 아닌 Application Filter Chain이다.그렇다면 FilterChain을 사용하는 이유는 뭘까?1. 하위 필터나 서블릿의 호출 방지→ 허가 받지 않은 요청을 필터링하여 보안을 유지하기 위해2. request, response 수정→ 필요에 따라 데이터를 변경, 수정하기 위해 DelegatingFilterProxy와 FilterChainProxyDelegatingFilterProxyDelega..
Ukjong
'Spring' 카테고리의 글 목록 (2 Page)