ORM Framework(2026-15-19)
1. 연관관계 매핑 (Association Mapping)
목적: 객체의 참조 관계와 RDB 테이블의 외래 키(FK) 관계 사이의 패러다임 불일치 해소.
주요 어노테이션: @ManyToOne, @OneToMany 등.
핵심 규칙 (양방향 매핑):
반드시 연관관계의 주인(Owner)을 지정해야 함.
외래 키를 관리하는 엔티티를 주인으로 설정.
주인이 아닌 엔티티는 mappedBy 속성을 사용하여 읽기 전용으로 설정.
팀과 멤버가 있으면
@OneToMany(mappedBy = "team")
private List<Member> memberList; 처럼 주인이 아닌 엔티티에 mappedBy 로 읽기 설정을 한다
2. 즉시 로딩 (Eager Loading)
동작 방식: 부모 엔티티 조회 시, 연관된 자식 엔티티까지 JOIN 연산으로 즉시 조회.
장점: 한 번의 쿼리로 필요한 연관 데이터를 모두 확보.
3. 지연 로딩 (Lazy Loading)
동작 방식: 부모 엔티티 조회 시, 연관 객체는 실제 데이터가 아닌 프록시(Proxy) 객체로 대체.
특징: 해당 연관 객체의 실제 데이터가 필요한 시점(메서드 호출 등)에 DB에 쿼리를 실행하여 조회.
프록시객체란 : JPA에서 프록시(Proxy)는 데이터베이스 조회를 최대한 뒤로 미루기 위해 사용하는 ‘가짜 객체’
프록시 객체 쓰는 이유 : 쓰지도 않을 정보까지 DB에서 한꺼번에 읽어와야 하므로 컴퓨터 자원이 낭비되는데 프록시를 쓰면 엔티티 정보는 일단 가짜 객체(프록시)로 채워두고, 필요한 속성만 빠르게 DB에서 가져옴
4. 영속성 전이 (Cascade)
동작 방식: 특정 엔티티의 상태 변화(저장, 삭제 등)를 연관된 하위 엔티티에도 자동으로 전파 하기 위해 사용.
활용 예시: 게시글(부모) 저장/삭제 시 첨부파일(자식) 일괄 저장/삭제.
댓글
댓글이 없습니다.
