Back-end

·Back-end
🌱 Entity의 상태 (생명 주기) JPA에서 엔티티는 크게 4가지 상태를 가진다. 1. Transient (비영속) 엔티티 객체가 Java 메모리에서만 존재하고, 영속성 컨텍스트와 아무 관련 없는 상태 Person person = new Person(); 2. Persistent (영속) 엔티티 객체가 영속성 컨텍스트에 관리된 상태 영속 상태라고 바로 데이터베이스에 쿼리가 날라가는 것은 아니고 주로 트랜잭션이 commit 되거나 flush 메서드 실행 시 데이터베이스에 반영 된다. entityManger.persist(person); 3. Detached (준영속) 엔티티 객체가 영속성 컨텍스트에 저장되었다가 분리된 상태 더이상 영속성 컨텍스트에 의해 관리되지 않기 때문에 1차 캐시 등에서 모든 정보..
·Back-end
🌱 Entity의 상태 (생명 주기)JPA에서 엔티티는 크게 4가지 상태를 가지며, 상태를 전환시키는 기능을 EntityManager가 제공한다.1. Transient(비영속): 엔티티 객체가 Java 메모리에서만 존재하고, 영속성 컨텍스트와 아무 관련 없는 상태2. Persistent(영속): 엔티티 객체가 영속성 컨텍스트에 관리된 상태(영속 상태라고 바로 DB에 쿼리가 날라가는 것 X)3. Detached(준영속): 엔티티 객체가 영속성 컨텍스트에 저장되었다가 분리된 상태4. Removed(삭제): 실제 DB 삭제를 요청한 상태 🌱 Hibernate JPA EntityManager 핵심 기능1️⃣ Persistpersist는 엔티티의 새로운 인스턴스를 영속성 컨텍스트에 저장할 때 사용된다.Pers..
·Back-end
그냥 내가 기억해 두려고 간단하게 올리는 글.. + 혹시 나같은 사람 있을까 봐 @Configuration @RequiredArgsConstructor public class WebConfig implements WebMvcConfigurer { private final AuthInterceptor authInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(authInterceptor) .order(1) .addPathPatterns("/**") .excludePathPatterns("/", "/docs/**", "/*.ico"); } } @Component @Req..
·Back-end
🌏 의존성 주입 방법생성자 주입(Constructor Injection)필드 주입(Field Injection)수정자 주입(Setter Injection)1️⃣ 생성자 주입(Constructor Injection)생성자 주입 방법은 생성자를 통해 의존 관계를 주입한다.생성자 주입은 생성자의 호출 시점에 1회 호출 되는 것이 보장되기 때문에 주입받은 객체가 변하지 않거나, 반드시 객체의 주입이 필요한 경우에 강제하기 위해 사용할 수 있다.@Servicepublic class ProductService { // final을 붙일 수 있음 private final ProductRepository productRepository; @Autowired // 생략 가능 public Produ..
·Back-end
🤭 미리 읽고 오면 좋은 글 [JPA] JPA, Hibernate, Spring Data JPA에 대한 이런저런.. 정리☁️ JPA 인터페이스 🫧 EntityManagerFactory JPA 설정을 기반으로 EntityManager 인스턴스를 생성하는 팩토리 역할 (여러 EntityManager 생성 가능) 애플리케이션이 DB를 하나만 사용하는 경우 EntityManagerFactorychaewsscode.tistory.com [JPA] Hibernate JPA EntityManager 핵심 기능🌱 영속성 컨텍스트 내의 Entity 생명주기 엔티티는 크게 4가지 상태를 가지며, 상태를 전환시키는 기능을 EntityManager가 제공한다. 1. Transient(비영속): 엔티티 객체가 Java 메..
·Back-end
🤔 OSIV에 대해 알아보기 전.. Persistence Context 를 모른다면? [JPA] 영속성 컨텍스트의 동작원리와 이점 👍 영속성 컨텍스트의 동작원리 🌱 member 엔티티를 추가하는 과정 1. 엔티티가 영속화(persist)되어 1차 캐시에 저장된다. 2. 쓰기지연 SQL 저장소에 INSERT문이 생성되어 1차 캐시에 등록된 데이터를 chaewsscode.tistory.com 🤧 OSIV 요약 더보기 특징 OSIV는 클라이언트 요청이 들어올 때 영속성 컨텍스트를 생성해서 요청이 끝날 때까지 같은 영속성 컨텍스를 유지한다. 따라서 한 번 조회된 엔티티는 요청이 끝날 때까지 영속 상태를 유지한다. 엔티티 수정은 트랜잭션이 있는 계층(서비스, 레포지토리 계층)에서만 동작한다. 트랜잭션이 없는 프레..
·Back-end
☁️ Hibernate에서의 객체 캐싱 😶‍🌫️ 1차 캐시(First-Level Cache) JPA의 Persistence Context에서 사용되는 핵심 메커니즘 영속성 컨텍스트 내부에서 트랜잭션 단위로 엔티티 인스턴스를 저장하고 관리하는 저장소 1차 캐시는 기본적으로 활성화되어 있으며 영속성 컨텍스트가 곧 1차 캐시라고 할 수 있음 트랜잭션을 Commit 하거나 Flush 할 경우 1차 캐시에 있는 엔티티의 변경 사항들을 DB에 반영 ❄️ 1차 캐시의 조회 동작 1. 조회 시 식별자(ID)를 통해 1차 캐시에 데이터가 있는지 확인하고, 데이터가 있으면 가져옴 2. 1차 캐시에 데이터가 없으면 DB에 데이터 요청 3. DB에서 받아온 데이터를 재사용할 수 있도록 1차 캐시에 저장 😶‍🌫️ 공유 캐시(S..
·Back-end
스프링 프레임워크에서 어노테이션을 통해 트랜잭션을 읽기 전용 모드로 설정할 수 있다. 이는 예상치 못한 엔티티의 등록, 변경, 삭제를 예방할 수 있고 성능을 최적화할 수 있다. 🧐 성능이 왜 최적화되지? JPA, Hibernate, Spring Data JPA에 대한 이런저런.. 정리 [JPA] JPA, Hibernate, Spring Data JPA에 대한 이런저런.. 정리 ☁️ JPA 인터페이스 🫧 EntityManagerFactory JPA 설정을 기반으로 EntityManager 인스턴스를 생성하는 팩토리 역할 (여러 EntityManager 생성 가능) 보통 애플리케이션이 시작될 때 EntityManagerFactory 인스턴스를 chaewsscode.tistory.com 해당 글을 읽기 전에 ..
·Back-end
☁️ JPA 인터페이스 EntityManagerFactory EntityManager Persistence Context 관련 정보를 찾다가 이해에 도움이 될 찰떡같은 비유가 있어서 해당 블로그 사진을 참조한다. 🫧 EntityManagerFactory JPA 설정을 기반으로 EntityManager 인스턴스를 생성하는 팩토리 역할 (여러 EntityManager 생성 가능) 애플리케이션이 DB를 하나만 사용하는 경우 EntityManagerFactory 인스턴스를 한 번만 생성하고 재사용 더보기 🤔 여러 개의 DB를 사용하는 경우에는 EntityManagerFactory 인스턴스를 어떻게 다룰까? 1. 단일 EntityManagerFactory 인스턴스 사용 여러 DB를 사용하더라도, 모든 DB의 설정..
서채리
'Back-end' 카테고리의 글 목록 (5 Page)