목록backend (6)
종식당

🍳 인덱스인덱스는 데이터베이스 테이블의 검색 속도를 향상하기 위한 자료구조로 백과사전의 색인과 같다.저장되는 컬럼의 값을 사용하여 항상 정렬된 상태를 유지하는 것이 특징이다.이러한 특징으로 인해 인덱스는 INSERT, UPDATE, DELETE의 성능이 희생된다는 것이 단점이다.🥬 인덱스는 어떤 자료 구조로 이루어져 있나요?MYSQL InnoDB를 기준으로 B+Tree와 같은 변형 B-Tree 자료구조를 이용해서 인덱스를 구현한다.기본 토대는 B-Tree 인덱스이기 때문에 이를 기준으로 설명한다.B-Tree 인덱스는 칼럼의 값을 변형하지 않고 인덱스 구조체 내에서 항상 정렬된 상태로 유지한다.B-Tree에서는 크게 3가지 노드가 존재한다. 최상위에 하나의 루트 노드가 존재하며, 가장 하위 노드인 리프..

🎞️ JPA N + 1 문제JPA N + 1 문제는 연관 관계가 설정된 엔티티를 조회할 경우에, 조회된 데이터 개수(N)만큼 연관관계의 조회 쿼리가 추가로 발생한다. 예를 들어, 블로그 게시글과 댓글이 있는 경우, 게시글을 조회한 후 각 게시글마다 댓글을 조회하기 위한 추가 쿼리가 발생할 수 있다. 이를 N+1 문제라고 한다.⭐ findAll 메서드의 글로벌 패치 전략 별 N + 1 문제 상황에 대해서 설명해 주세요.spring data jpa에서 제공하는 findAll()을 실행하면 N+1문제가 발생한다. 이는 findAll()은 select u from User u라는 JPQL 구문을 생성해서 실행하기 때문이다. JPQL은 글로벌 패치 전략을 고려하지 않고 쿼리를 실행한다. 모든 User를 조회하는..

💀 일급 컬렉션 (First-Class Collection)일급 컬렉션은 하나의 컬렉션을 감싸는 클래스를 만들고, 해당 클래스에서 컬렉션과 관련된 비즈니스 로직을 관리하는 패턴을 말한다. 컬렉션이란 여러 개의 객체를 저장하고 관리하는 자료 구조를 의미한다. Java에서는 List, Set, Map 등의 컬렉션 프레임워크가 대표적인 예시이다. 아래 코드 중에서 Order의 List자료구조를 감싼 Orders가 일급 컬렉션의 예시이다.// 일급 컬렉션public class Orders { private final List orders; public Orders(List orders) { validate(orders); // 검증 수행 ... } public v..

🐶 엔티티 매니저엔티티 매니저에 대해 알기 위해서는 먼저 영속성 콘텍스트에 대해 알아야 한다.🐗 영속성 컨텍스트영속성 콘텍스트는 엔티티를 영구 저장하는 환경으로 1차 캐싱, 쓰기 지연, 변경 감지를 통해 영속 로직을 효율적으로 할 수 있게 해 줍니다. 이러한 효율적인 영속 로직 수행을 위해서 엔티티는 영속성 콘텍스트에 의해 관리되어야 한다.이런 작업을 도와주는 것이 바로 엔티티 매니저이다.엔티티 매니저는 엔티티의 상태를 변경하고, 영속성 콘텍스트와 상호작용함으로써 영속 로직을 수행하는 역할을 가지고 있다.🕵️ 조금 더 구체적으로 엔티티 매니저를 살펴보자엔티티는 영속성 컨텍스트와 관련하여 4가지 상태를 가질 수 있다.이는 비영속, 영속, 준영속, 삭제이다.엔티티 매니저는 persist, merge, ..

📚 Checked Exceptionchecked Exception은 컴파일 시점에 확인되며, 반드시 처리해야 하는 예외이다.자바에서는 IOException, SQLException 등이 이에 속한다.Checked Exception을 유발하는 메서드를 호출하는 경우, 메서드 시그니처에 throws를 사용하여 호출자에게 예외를 위임하거나 메서드 내에서 try-catch를 사용하여 해당 예외를 반드시 처리해야 한다.📚 Checked Exception 사용하는 경우외부환경과의 상호작용에서 발생할 가능성이 높은 예외에 적합하다. ex) 파일 입출력, 네트워크 통신 등에서 발생하는 예외들이러한 예외는 예측 가능하며, 호출하는 쪽에서 적절히 처리할 수 있는 여지가 있다. 🎈 Unchecked ExceptionU..