데이터 모델링, 트랜잭션과 동시성 제어, 조회 성능, ORM을 순서대로 살펴보는 자료입니다. JPA는 영속성 명세, Hibernate는 그 구현체 중 하나이며 Spring Data JPA는 저장소 추상화를 제공하는 계층으로 구분합니다.
데이터 모델과 저장 방식
-
Database normalization description — Microsoft
중복 데이터와 종속성을 정리하는 정규화의 목적과 제1·제2·제3정규형을 예제로 설명합니다.
-
문서형·키 값·와이드 컬럼·그래프 데이터베이스의 구분과 관계형 모델과의 차이를 소개합니다.
-
What is a columnar database? — ClickHouse
행과 열 단위 저장의 차이를 설명하며 관계형 여부와 행·열 저장 방식이 별개의 구분임을 다룹니다.
트랜잭션과 동시성 제어
-
여러 변경을 하나로 묶는 트랜잭션과 COMMIT·ROLLBACK·SAVEPOINT의 기본 동작을 설명합니다.
-
Transaction Isolation — PostgreSQL
격리 수준별 읽기 현상과 직렬화 이상, PostgreSQL의 구현 차이 및 재시도 조건을 설명합니다.
-
공유·배타 락, 레코드 락, 갭 락과 넥스트키 락이 잠그는 범위를 설명합니다.
-
High Availability, Load Balancing, and Replication — PostgreSQL
복제·대기 서버·장애 조치와 읽기 부하 분산의 선택지를 설명합니다.
인덱스와 쿼리
-
인덱스 종류와 다중 열·부분·표현식 인덱스, 인덱스 사용의 비용을 다룹니다.
-
실행 계획과 추정 비용을 읽고 EXPLAIN ANALYZE의 실제 실행 결과와 비교하는 방법을 설명합니다.
-
페이지별 조회에서 정렬의 필요성과 큰 OFFSET의 처리 비용을 설명합니다.
-
Subquery Expressions — PostgreSQL
EXISTS·IN·NOT IN의 의미와 NULL이 포함될 때의 결과를 비교할 수 있습니다.
-
Using Prepared Statements — Oracle Java Tutorials
Statement와 비교해 SQL 값 바인딩을 분리하는 PreparedStatement의 사용법을 설명하는 JDBC 기초 자료입니다.
-
SQL Injection Prevention Cheat Sheet — OWASP
매개변수화 쿼리·허용 목록 검증·최소 권한으로 SQL 인젝션을 방어하는 기준을 설명합니다.
JPA와 조회 최적화
-
Jakarta Persistence 3.2 Specification
EntityManager·엔티티 생명주기·ID 생성·연관관계·낙관적 및 비관적 잠금의 명세를 제공합니다.
-
연관관계와 지연 로딩, N+1·Fetch Join·페이징, 스키마 생성과 Soft Delete 등 Hibernate 구현을 다룹니다.
-
Persisting Entities — Spring Data JPA
엔티티가 새 객체인지 판별해 persist 또는 merge를 선택하는 저장 동작을 설명합니다.
-
JDBC 연결을 재사용하는 커넥션 풀의 구성과 대기 시간·최대 연결 수 등의 설정을 살펴볼 수 있습니다.