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..
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 기술이 널리 사용되면서, ..
241220 TIL
·
TIL
JDBC자바 프로그램내에서 SQL문을 실행하기 위한 자바 APIJAVA는 표준 인터페이스인 JDBC API를 제공데이터베이스 벤더, 또는 기타 써드파티에서는 JDBC 인터페이스를 구현한 드라이버 (driver)를 제공java.sql패키지를 보면 대부분이 interface로 되어 있음이를 실제로 구현하는 것은 DBMS를 만든 회사JDBC 드라이버 설치-build.gradledependencies { implementation group: 'com.mysql', name: 'mysql-connector-j', version: '8.3.0'}maven,gradle이 없었으면 드라이버(라이브러리)를 하나 씩 찾아서 다운로드 해서 사용해야 함JDBC 사용import java.sql.*;//드라이버 로드 (예..