ORM / JPA / Hibernate 이론
1. JDBC의 한계 📌 JDBC란 JDBC(Java Database Connectivity)는 자바 표준 API로, 자바 애플리케이션이 관계형 데이터베이스에 접근할 수 있게 해주는 인터페이스 명세다. java.sql 패키지 하위에 정의된 Connection, PreparedStatement, ResultSet 등이 모두 JDBC 스펙에 해당한다. 실...
1. JDBC의 한계 📌 JDBC란 JDBC(Java Database Connectivity)는 자바 표준 API로, 자바 애플리케이션이 관계형 데이터베이스에 접근할 수 있게 해주는 인터페이스 명세다. java.sql 패키지 하위에 정의된 Connection, PreparedStatement, ResultSet 등이 모두 JDBC 스펙에 해당한다. 실...
1. 영속성 컨텍스트란 JPA를 처음 접하면 “왜 DB에 바로 저장하지 않고 영속성 컨텍스트라는 중간 단계가 있는 걸까?”라는 의문이 생긴다. 예를 들어 한 HTTP 요청 안에서 아래와 같은 일이 벌어진다고 생각해보자. 1 2 3 4 Member member = findById(1L); // SELECT → DB 왕복 1번 member.setName(...
1. @Entity @Entity는 해당 클래스가 JPA가 관리하는 엔티티임을 선언하는 어노테이션이다. 이 어노테이션이 붙어야만 JPA가 이 클래스를 인식하고 DB 테이블과 매핑한다. 📌 반드시 지켜야 할 제약 기본 생성자가 필수다. JPA는 DB에서 조회한 결과를 엔티티 객체로 변환할 때 내부적으로 리플렉션(Reflection)을 사용한다. 이 과정...
1. 연관관계 매핑이 필요한 이유 연관관계 매핑을 이해하려면 항상 세 가지 개념을 함께 생각해야 한다. 방향: 단방향(한쪽만 참조), 양방향(서로 참조) 다중성: @OneToOne / @OneToMany / @ManyToOne / @ManyToMany 연관관계 주인: 양방향일 때 FK를 실제로 관리하는 쪽 2. @ManyToOne — 다대일 단방향 가...
1. Repository 계층 구조 📌 인터페이스 상속 다이어그램 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 «interface» Repository<T, ID> │ 마커 인터페이스 — 메서드 없음. Spring이 스캔 대상을 식별하는 용도 │ «interface» CrudRepository<T, ...
1. QueryDSL과 커스텀 Repository 1 2 3 4 5 6 7 8 9 JpaRepository만으로는 뭐가 부족한가? ↓ 커스텀 Repository 패턴이란 무엇인가? ↓ 동적 쿼리를 직접 짜면 왜 힘든가? ↓ QueryDSL이 그 문제를 어떻게 해결하는가? ↓ 커스텀 Repository + QueryDSL = 완성된 전체 그림 2. Jp...