목록2025/06/09 (5)
che01 님의 블로그
1. JPA 프록시란?프록시(Proxy)는 실제 엔티티 객체를 대신하는 가짜 객체입니다. 실제 엔티티처럼 보이지만, 내부적으로는 데이터베이스 조회를 지연시키기 위한 껍데기 역할을 합니다.// 이 시점에는 실제 DB 조회가 발생하지 않음Member member = em.getReference(Member.class, 1L);System.out.println(member.getClass().getName()); // 출력: com.example.Member$HibernateProxy$...프록시의 핵심 특징상속 구조프록시는 실제 엔티티 클래스를 상속받은 하위 클래스입니다겉보기에는 실제 엔티티와 동일하게 보이지만 내부 구현이 다릅니다지연 초기화프록시 생성 시점에는 데이터베이스에 접근하지 않습니다실제 데이터에 ..
상속이란 무엇인가?프로그래밍에서 상속은 부모와 자식 관계를 만드는 것입니다. 예를 들어 "상품"이라는 부모가 있고, "책"과 "옷"이라는 자식들이 있다고 생각해보세요.상품: 이름, 가격 (공통 속성)책: 이름, 가격 + 저자 (상품 + 고유 속성)옷: 이름, 가격 + 사이즈 (상품 + 고유 속성)하지만 여기서 문제가 생깁니다. Java는 상속이 가능하지만, 데이터베이스 테이블은 상속 개념이 없어요!그래서 JPA는 Java의 상속 구조를 데이터베이스 테이블로 변환하는 3가지 방법을 제공합니다.전략 1: 단일 테이블 전략 (Single Table)"모든 걸 하나의 테이블에 때려넣자!"어떻게 동작하나요?부모와 모든 자식 클래스의 정보를 하나의 테이블에 저장합니다. 어떤 타입인지 구분하기 위해 DTYPE이라는 ..
N:M 연관관계란?학생과 수업 예시로 이해하기현실 상황학생 한 명이 여러 수업을 들을 수 있다하나의 수업도 여러 학생이 들을 수 있다구체적 예시학생들:- 철수: 수학, 영어 수업 수강- 영희: 수학, 과학 수업 수강- 민수: 영어, 과학 수업 수강수업들:- 수학: 철수, 영희가 수강- 영어: 철수, 민수가 수강 - 과학: 영희, 민수가 수강이처럼 서로 다:다로 연결되는 관계를 N:M (Many-to-Many) 관계라고 합니다.방법 1: 단순한 @ManyToMany 사용테이블 구조Student 테이블 student_class 테이블 Class 테이블┌─────────────────┐ ┌─────────────────────┐ ┌─────────────────┐│ id (PK..
1:1 관계란 무엇인가?현실 예시로 이해하기사람 1명 ↔ 주민등록증 1개회사 1개 ↔ 대표자 1명학생 1명 ↔ 학생증 1개이처럼 하나의 A가 하나의 B와만 연결되는 관계를 1:1 관계라고 합니다.사용자와 프로필 예시로 알아보기실제 서비스에서 많이 사용하는 사용자(User)와 프로필(Profile) 관계로 설명하겠습니다.상황 설정한 명의 사용자는 하나의 프로필만 가질 수 있다하나의 프로필은 한 명의 사용자에게만 속한다1단계: 단방향 관계 (한쪽에서만 참조)방법 1: User가 Profile을 참조 (추천)테이블 모습User 테이블 Profile 테이블┌─────────────────────┐ ┌──────────────────┐│ id (PK) │ 1 │ ..
1:N 연관관계란?한 엔티티가 여러 개의 다른 엔티티를 참조하는 관계입니다.예시: 하나의 Team이 여러 명의 Player를 가지는 경우DB에서는 외래 키가 항상 N쪽(Player)에 위치객체에서는 1쪽(Team)에서 List로 N쪽을 참조1:N 단방향 관계개념Team → List 로만 참조Player는 Team을 참조하지 않음연관관계의 주인은 Team (1쪽)코드 예시@Entity@Table(name = "team")public class Team { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @OneToMany @JoinColumn..