JPA와 프록시 객체
📌 프록시 객체란? JPA 공부를 하다 보면 프록시 객체라는 개념이 등장한다. 지연 로딩에서 프록시 객체를 로드하는데, 실제로 데이터가 필요할 때까지 실제 객체를 로드하지 않는다. 조금 더 자세히 알아보자. 특징 프록시 객체는 실제 엔티티 객체를 감싸는 가상의 객체로, 실제 데이터가 필요할 때까지 DB 조회를 지연시키는 역할을 한다. 쉽게 표현하...
📌 프록시 객체란? JPA 공부를 하다 보면 프록시 객체라는 개념이 등장한다. 지연 로딩에서 프록시 객체를 로드하는데, 실제로 데이터가 필요할 때까지 실제 객체를 로드하지 않는다. 조금 더 자세히 알아보자. 특징 프록시 객체는 실제 엔티티 객체를 감싸는 가상의 객체로, 실제 데이터가 필요할 때까지 DB 조회를 지연시키는 역할을 한다. 쉽게 표현하...
📌 문제 https://www.acmicpc.net/problem/9370 📌 설명 1부터 n까지의 노드가 존재하고, 출발 노드 s가 존재한다고 하자. 추가로 두 노드 g, h가 주어지는데, 다익스트라 알고리즘을 통해 최단 경로를 계산할 때, (g, h) 간선을 포함하는 노드를 출력해야 한다. 예를 들어 노드 k까지 최단 경로를 구했다고 하자....
📌 문제 https://www.acmicpc.net/problem/1016 📌 설명 에라토스테네스의 체 알고리즘의 아이디어에 착안하여 해결하는 문제이다. $a$와 $b$ 사이에 존재하는 제곱 ㄴㄴ 수를 찾는 방법은 다음과 같다. $a \leq x \leq b$인 $x$ 중 $x \ \text{mod}\ p^2 = 0$ 를 만족하는 $x$를 소...
❓Question Q. N+1 문제란 무엇인가? Q. JPA에서 N+1 문제가 발생하는 근본적인 이유는? Q. Eager Loading과 Lazy Loading의 차이점은? Q. N+1 문제를 해결하는 방법은? 📌 N+1 문제란? N+1 문제 는 연관 관계가 있는 엔티티를 조회할 때 발생할 수 있는 문제이다. 하나의 쿼리를 기대했으나 의도...
📌 JPA란? JPA(Java Persistence API) 는 자바 애플리케이션에서 RDBMS를 사용하기 위한 표준 ORM 기술이다. JPA는 인터페이스로, 이를 구현한 구현체를 사용해야 한다. JPA의 구현체는 Hibernate, EclipseLink, OpenJPA, DataNucleus 등이 있다. 전체적인 데이터 흐름은 아래와 같다. ...
📌 문제의 코드 @Transactional public void saveTools() { List<SubCategory> subCategories = subCategoryRepository.findAll(); for (SubCategory subCategory : subCatego...
📌 트랜잭션 트랜잭션은 DBMS에서 발생하는 하나의 논리적 작업 단위이다. 하나의 작업에는 하나 이상의 쿼리문이 포함된다. 예를 들어 ‘인출’이라는 작업은 계좌에 잔액을 확인하고 일정 금액을 빼서 금액을 업데이트하는 것을 포함한다. 📌 트랜잭션의 연산 Commit commit 연산이 수행되면 트랜잭션 내에서 수행된 작업이 DB에...
📌 정규화란? 정규화(Normalization)는 데이터의 중복을 최소화하고 무결성을 지키기 위해 데이터를 구조화하는 방법이다. 장점 중복 데이터가 줄어들기 때문에 저장공간이 줄어든다. 데이터의 일관성을 유지할 수 있다. 단점 여러 테이블에 데이터가 분산될 수 있다. 데이터 조회 시 조인 연산이 필요할 수 있다. 📌 이...
📌 모델링 데이터 관점의 업무 분석 기법 현실 데이터를 약속된 표기법으로 표현하는 과정 DB를 구축하기 위한 분석 및 설계 과정 특징 단순화: 핵심 요소에 집중, 불필요한 요소는 제거하자 추상화: 간략하게 표현하자 명확화: 정확하게 표현하자 관점 데이터 관점: 어떻게 데이터가 저장, 접근, 관리되는지 프로...