ORM

개발/JPA

Spring Data JPA 정리

강의를 수강한지 1년이 되가는 Spring Data JPA에 대해 정리해보도록 하겠습니다. Spring Data JPA 스프링 데이터 JPA는 스프링 프레임워크에서 JPA를 편리하게 사용할 수 있도록 지원하는 프로젝트다. CRUD 처리를 위한 공통 인터페이스를 제공하며, 리포지토리를 개발할 때 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 인터페이스를 구현한 객체를 동적으로 생성해서 주입한다. 이 밖에도 많은 JPA의 기능을 편리하게 사용할 수 있도록 지원한다. 본격적으로 살펴보자. 공통 인터페이스 스프링 데이터 JPA에서 제공하는 공통 인터페이스 JpaRepository에 대해 살펴보자. //JpaRepository 공통 기능 인터페이스 public interface JpaRepository..

개발/JPA

프록시, 즉시 로딩과 지연 로딩

2023. 02.07 15:40 복습 시작 이번에는 프록시와 즉시 로딩, 지연 로딩에 대해 알아보겠다. 객체는 객체 그래프로 연관된 객체들을 탐색한다. 그런데 객체가 DB에 저장되어 있으므로 연관된 객체를 마음껏 탐색하기는 어렵다. JPA 구현체들은 이 문제를 해결하려고 프록시라는 기술을 사용한다. 프록시를 사용하면 연관된 객체를 처음부터 데이터베이스에서 조회하는 것이 아니라, 실제 사용하는 시점에 데이터베이스에서 조회할 수 있다. 하지만 자주 함께 사용하는 객체들은 조인을 사용해서 함께 조회하는 것이 효과적이다. JPA는 즉시 로딩과 지연 로딩이라는 방법으로 둘을 모두 지원한다. 한 가지 예시를 들어보자. 다대일 단방향 관계인 멤버와 팀이 있다. 즉 멤버는 팀을 참조하는 참조 변수가 있고, 팀은 멤버를..

개발/JPA

연관관계 매핑 기초

2023. 02.07 13:00 복습 시작 연관관계 엔티티들은 대부분 다른 엔티티와 연관관계가 있다. 객체는 참조(주소)를 사용해서 관계를 맺고 테이블은 외래 키를 사용해서 관계를 맺는다. 이 둘은 완전히 다른 특징을 가지며, 객체 관계 매핑(ORM)에서 가장 어려운 부분이 바로 객체 연관관계와 테이블의 연관 관계를 매핑하는 일이다. 이제 객체의 참조와 테이블의 외래 키를 매핑하는 방법을 알아보겠다. 알아둬야 할 용어들이 있다. 방향 : 단방향과, 양방향이 있다. 한쪽만 참조하는 것을 단방향, 양 쪽 모두 서로 참조하는 것을 양방향이라고 한다. 방향은 객체 관계에만 존재하고, 테이블은 항상 양방향이다. 다중성: 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 이해 연관관계의 주인 :..

개발/JPA

기본 키 매핑

2023. 02.07 12:00 복습 시작 기본 키 매핑 기본키를 애플리케이션에서 직접 할당하는 대신에 데이터베이스가 생성해주는 값을 사용하려면 어떻게 매핑해야 할까? 오라클의 시퀀스 오브젝트라던가 아니면 MySQL의 AUTO_INCREMENT 같은 기능을 사용해서 생성된 값을 기본 키로 사용하려면 어떻게 해야 할까? 데이터베이스마다 기본 키를 생성하는 방식이 서로 다르므로 이 문제를 해결하기는 쉽지 않다. JPA는 이런 문제를 어떻게 해결하는지 알아보자. 직접 할당 : @Id만 사용 자동 생성 (@GeneratedValue) IDENTITY : 기본 키 생성을 데이터베이스에 위임. (MySQL) SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용. (ORACLE) @SequenceGenerator 필..

Debin
'ORM' 태그의 글 목록