250221 TIL
·
TIL
JOIN두 개 이상의 테이블을 연결하여 데이터를 가져오는 SQL 연산JOIN 종류설명INNER JOIN두 테이블에서 일치하는 데이터만 반환LEFT JOIN (또는 LEFT OUTER JOIN)왼쪽 테이블의 모든 데이터 + 일치하는 오른쪽 테이블 데이터 반환 (오른쪽에 데이터가 없으면 NULL)RIGHT JOIN (또는 RIGHT OUTER JOIN)오른쪽 테이블의 모든 데이터 + 일치하는 왼쪽 테이블 데이터 반환 (왼쪽에 데이터가 없으면 NULL)FULL JOIN (또는 FULL OUTER JOIN)두 테이블에서 모든 데이터 반환 (일치하지 않는 데이터는 NULL)CROSS JOIN두 테이블의 모든 조합을 반환 (Cartesian Product)SELF JOIN같은 테이블을 JOIN하여 데이터 비교1️⃣..
250220 TIL
·
TIL
Criteria API▪️JPA에서 동적 SQL을 안전하게 작성할 수 있도록 도와주는 API▪️jpql과 네이티브 쿼리는 문자열로 작성하므로 컴파일 타임에 오류를 체크해주지 않음▪️자바 코드 기반으로 쿼리를 구성하기 때문에 컴파일 타임에 오류를 잡을 수 있고, IDE의 자동완성 기능을 활용할 수 있는 장점이 있다Criteria API 구성 요소CriteriaBuilder (쿼리 생성 도구)▪️Criteria API 쿼리를 만들기 위한 팩토리 객체▪️이 객체를 통해 쿼리를 생성하고 조건을 추가할 수 있다▪️쿼리의 기본 제작 도구CriteriaBuilder cb = entityManager.getCriteriaBuilder();CriteriaQuery (쿼리 정의)▪️실제 SQL 쿼리를 나타내는 객체로, C..
250219 TIL
·
TIL
Spring Data JPASpring Framework에서 JPA를 더욱 쉽게 사용할 수 있도록 도와주는 라이브러리Spring Data JPA의 특징1️⃣자동 구현 ▪️Spring Data JPA에서는 기본적인 CRUD 작업을 자동으로 해줌.▪️CrudRepository나 JpaRepository 인터페이스를 상속받은 리포지토리 인터페이스를 정의하면, Spring Data JPA가 이를 기반으로 자동으로 구현해준다.public interface UserRepository extends JpaRepository { // 기본적인 CRUD 메서드는 자동으로 구현.} 2️⃣쿼리 메서드 ▪️Spring Data JPA는 쿼리 메서드를 자동으로 생성해준다.▪️findByUsername(String user..
250218 TIL
·
TIL
상속 매핑 전략객체 지향적인 상속 구조를 관계형 데이터베이스의 테이블로 변환하는 방법JPA는 3가지 주요 상속 매핑 전략을 제공1. 단일 테이블 전략 (Single Table Strategy)모든 자식 클래스를 하나의 테이블에 저장하는 방식한 개의 테이블에 모든 자식 클래스의 데이터를 저장부모 클래스와 자식 클래스의 모든 속성을 포함하는 하나의 테이블만 생성됨자식 클래스를 구분하기 위해 **"구분 컬럼(DTYPE)"**을 추가함테이블이 하나라서 조회 성능이 빠르고, 조인이 필요 없음불필요한 NULL 값이 많이 저장될 수 있음@Entity@Inheritance(strategy = InheritanceType.SINGLE_TABLE) // 단일 테이블 전략@DiscriminatorColumn(name = "..
250214 TIL
·
TIL
https://jjiyuuuuun.tistory.com/65#User 정보를 다루는 User Entity 예제-1-4 이어서,,DAO 리팩토링JPAUtilEntityManagerFactory 를 관리하는 유틸리티 클래스import jakarta.persistence.EntityManagerFactory;import jakarta.persistence.Persistence;import lombok.extern.slf4j.Slf4j;@Slf4jpublic class JPAUtil { private static final EntityManagerFactory emfInstance = Persistence.createEntityManagerFactory("UserPU"); // J..
250212 TIL
·
TIL
JPA(Java Persistence API)▪️자바에 대해서 ORM (Object-Relational Mapping) 표준을 제공하는 API▪️직접 쿼리를 작성하지 않고 엔티티 객체를 통해 데이터를 조작함▪️EJB(Entity Bean) → Hibernate → JPA(Java Persistence API)1️⃣EJB(Entity Bean) 시대▫️Entity Bean을 사용하여 데이터베이스와 연동함▫️복잡한 설정, 성능 문제 등 단점이 존재2️⃣Hibernate의 등장 ▫️Entity Bean의 한계를 극복하기 위해 Hibernate가 등장 ▫️객체-관계 매핑(ORM) 기술을 제공 3️⃣JPA(Java Persistence API)의 표준화 ▫️Hibernate 같은 ORM 기술이 널리 사용되면서, ..