SERIES

JPA 기본

14 Posts·Last updated on March 12, 2025

🚀
What is JPA?

December 21, 2024

지금 시대는 를 에 관리합니다. 근데 이 객체를 관계형 DB에 저장하려면 수 많은 SQL을 직접 작성해야 하는 SQL 중심적인 개발이 됩니다. 일반적으로 이라는 기능이 있다고 가정했을 때 SQL 중심적 개발 과정은 아래와 같습니다. 열심히 개발하다가 갑자기 기획자가 라고 한다면…? 개발자가 직접 다시 모든 select, update 등 모든 쿼리를 수정…


🚀
What is JPA? - 2

December 21, 2024

JPA의 탄생 배경에 대해 알아봤으니 이제 본격적으로 JPA에 대해 알아보도록 하겠습니다. JPA란 Java Persistencet API의 약자로 자바 진영의 기술 표준입니다. ORM Object-relational mapping(객체 관계 매핑) 객체는 객체대로 설계 관계형 데이터베이스는 관계형 데이터베이스대로 설계 ORM 프레임워크가 중간에서 매핑…


🚀
영속성 관리

December 30, 2024

JPA에서는 와 가 제일 중요합니다. 그 중에서 영속성 컨텍스트에 대해서 먼저 알아보도록 하겠습니다. 영속성 컨텍스트란? JPA를 이해하기 위한 가장 중요한 용어이며 굳이 쉽게 설명하면 이라는 뜻으로 설명할 수 있습니다. EntityManager를 직접 만들어 사용할 때 persist(entity)를 통해 데이터를 저장합니다. 사실 이는 DB에 저장…


🚀
엔티티 매핑

January 02, 2025

JPA에서 엔티티를 매핑시에 사용되는 어노테이션은 다음과 같습니다. 객체와 테이블 매핑: @Entity, @Table 필드와 컬럼 매핑 : @Column 기본 키 매핑 : @Id 연관관계 매핑: @ManyToOne, @JoinColumn @Entity @Entity가 붙은 클래스는 JPA를 사용하여 실제 테이블과 매핑할 클래스이며 필수로 사용해야 하는 어…


🚀
연관관계 매핑 기초

January 04, 2025

객체와 테이블 연관관계의 차이를 이해하고 참조와 외래 키를 매핑하는 방법에 대해 알아보겠습니다. 아래 용어는 연관관계 설명시 나오는 용어이니 숙지하고 넘어가도록 합니다. 방향(Direction) : 단방향, 양방향 다중성(Multiplicity) : 다대일(N:1), 일대다(1:N), 일대일(1:1), 다대다(N:M) 이해 연관관계의 주인(Owner) :…


🚀
다양한 연관관계 매핑

January 09, 2025

JPA에서는 다양한 연관관계를 통해 객체간의 참조를 정할 수 있으며 매핑시 대표적인 고려사항 세 가지가 있습니다. 다중성 다대일: @ManyToOne 일대다: @OneToMany 일대일: @OneToOne 다대다: @ManyToMany 단방향, 양방향 테이블 : 외래 키 하나로 양쪽 조인 가능하며 방향이라는 개념이 없음 객체 : 참조용 필드가 있는 쪽으로…


🚀
고급 매핑

January 19, 2025

상속관계 매핑 관계형 데이터베이스에서는 실제 상속 관계는 없기 때문에 슈퍼타입 서브타입 관계라는 모델링 기법을 활용하여 객체의 상속 구조와 DB의 슈퍼타입 서브타입 관계를 매핑하여 JPA에서는 이를 구현합니다. 데이터베이스에서 논리 모델을 실제 물리 모델로 구현하는 방법에는 세 가지가 있습니다. 각각 테이블로 변환 ⇒ 조인 전략 통합 테이블로 변환 ⇒ …


🚀
프록시와 연관관계 정리

February 17, 2025

프록시 em.find() vs em.getReference() em.find(): 데이터베이스를 통해서 실제 엔티티 객체 조회 em.getReference(): 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 프록시는 실제 클래스를 상속 받아서 만들어졌기 때문에 겉 모양이 같습니다. 따라서 이론상 사용하는 입장에서는 진짜 객체인지 프록시 객체…


🚀
JPA의 데이터 타입 분류

February 20, 2025

엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 예) 회원 엔티티의 키나 나이 값을 변경해도 식별자로 인식 가능 값 타입 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경시 추적 불가 예) 숫자 100을 200으로 변경하면 완전히 다른 값으로 …


🚀
객체지향 쿼리 언어(JPQL)

February 27, 2025

JPA의 다양한 쿼리 방법 여러가지 특정 조건에서 데이터를 조회하려면 결국은 복잡하고 다양한 실제 SQL이 실행되어야 하는데 JPA는 아래와 같은 다양한 쿼리 방법을 지원합니다. JPQL JPA Criteria QueryDSL 네이티브 SQL JDBC API 직접 사용 (MyBatis, SpringJdbcTemplate) JPQL 가장 단순한 조회 방법은…