본문 바로가기
반응형

Framework/🍃Spring10

JPA - 플러시(Flush)란? JPA의 flush에 대해 알아보자. 플러시란 영속성 컨텍스트의 변경내용을 데이터베이스에 반영하는 작업 Flush의 원리 보통 트랜잭션 Commit이 발생할때, flush가 동작한다. 이때, 쓰기지연 SQL저장소에 등록된 insert, update, delete query들이 전송된다. 여기서 중요한 점이, flush가 발생한 시점에 영속성 컨텍스트를 비우는게 아니라, 그대로 유지한채로 DB와 동기화를 하는 것이다. 따라서, 트랜잭션이라는 작업단위가 중요해지고 Commit직전에만 동기화하면 된다. Flush의 동작 구조 변경 감지 (Dirty Checking) 수정된 엔티티를 쓰기 지연 SQL 저장소에 등록 쓰기 지연 SQL 저장소의 쿼리를 데이터베이스에 전송(등록, 수정, 삭제 query) Flush를.. 2022. 12. 1.
JPA - 영속성 컨텍스트란? JPA를 이해하는데 가장 중요한 용어인 영속성 컨텍스트에 대해 알아보자. 영속성컨텍스트란 엔티티를 영구 저장하는 환경 그렇다. 영속성 컨텍스트는 DB가 아닌, JPA의 EntityManager가 엔티티를 관리하는 형태이다. 여기서 영속성 컨텍스트에 저장하기 위해 비영속 상태의 객체를 만들어서 영속성 컨텍스트에 저장해보자! 먼저, 비영속상태란 엔티티객체를 생성하고 EntityManager에게 위임시켜놓지 않은 상태이다. // 비영속상태의 객체 Member member = new Member(); member.setId("member1"); member.setUsername("회원1"); 여기서 EntityManager의 persist를 통해 영속성 컨텍스트에 저장할 수 있다. EntityManager em.. 2022. 11. 25.
SpringBoot + Gradle기반의 EhCache 사용 오늘은 Cache에 대해 알아보려고 한다. 변동되지 않는 Data를 많은 사용자가 조회할 경우 모든 요청마다 DB에 조회 하는게 과연 올바른 방식일까? 게다가 slow query일 경우 사용자의 대기시간은 더욱 길어지며, Connection pool의 순환도 쉽지 않을 것이다. cache를 통해 이러한 상황을 해결해보자! 💡 Cache ? Cache는 DB 조회 시 출력된 결과 값을 메모리 혹은 디스크에 보관하고 있다가 재호출시 DB 조회를 하지 않고 메모리에 있는 결과값을 그대로 제공해준다. 이러한 특성 때문에, Cache는 주로 반복적으로 동일한 결과값을 제공해주거나, 각 작업의 시간이 오래걸리거나 서버에 부하를 주는 경우 보통 사용한다. 실제 프로젝트를 하는 사례가 아니기 때문에 Redis같은 No.. 2022. 2. 10.
Spring cloud를 통해 MSA 구현해보기 - 3탄 Eureka, API Gateway를 통한 서버사이드 서비스 디스커버리 패턴 구현 이제 서비스 앞단에 API Gateway를 위치시키는 ServerSide Service Discovery 패턴을 구현하고자 한다. 먼저 API Gateway가 먼지 araboja. API Gateway란? API Gateway는 API의 요청자인 Client와 Server를 연결하는 중계자(proxy) 역할이다. API Gateway의 이점을 정리하면 아래와 같다. 인증/인가 일괄 처리 로드밸런싱을 통한 트래픽 분산 로깅처리 서킷 브레이크 통한 서비스 관리 이러한 API Gateway를 사용할 수 있는 오픈 소스에는 Netflix Zuul, Spring cloud gateway, ServiceComb EdgeService 등이 있다. 원래 Netflix Zuul을 이용하고자 했지만, Spring boot.. 2022. 2. 8.
반응형