All

JPA/Base

JPA - JPQL 개요

✍JPA는 다양한 쿼리 방법을 지원. JPQL - 표준 문법 JPA Criteria - 자바 코드를 짜서 JPQL 로 변환해주는 제네레이터 QueryDSL - 자바 코드를 짜서 JPQL 로 변환해주는 제네레이터 네이티브 SQL - 생 SQL 쿼리 JDBC API를 직접 사용하거나, MyBatis, SpringJdbcTemplate등을 함께 사용할 수 있음 -> JPQL + QueryDSL 에 집중하자. 💦 JPQL QueryDSL 사용 권장. 💠 QueryDSL - 자바 코드로 쿼리를 작성하기 때문에 컴파일러에서 문법 오류를 다 잡아준다. - 문자가 아닌 자바코드로 JPQL을 작성할 수 있음. - JPQL 빌더 역할 - 동적쿼리도 쉽게 들어감. - 단순하고 쉬움. - 실무 사용 권장 🔰 네이티브 SQL ..

JPA/Base

JPA - 값 타입

✍JPA의 데이터 타입 분류 엔티티 타입 - @Entity - 데이터가 변해도 식별자로 지속해서 추적 가능. 값 타입 - 단순한 값으로 사용하는 자바 기본타입이나 객체 - 식별자가 없고 값만 있으므로 변경시 추적 불가. - 기본값 타입 (primitive type (int, float..), wrapper class (Integer, Long ..) , String / 임베디드 타입 (복합 값 타입) / 컬렉션 값 타입 - 불변 객체로 만들어야 함. 💡 기본 값 타입 - String, int 등.. - 생명 주기를 엔티티에 의존 - 자바의 primitive 타입은 절대 공유되지 않음. - 기본 타입은 항상 값을 복사. (Side Effect 발생 X) - Integer와 같은 wrapper class, ..

JPA/Base

JPA - 프록시 & 지연로딩, 즉시로딩

✍프록시 기초 em.find(): 데이터베이스를 통해 실제 Entity 객체 조회. em.getReference() : 데이터베이스 조회를 미루는 가짜(프록시) Entity 객체 조회. => getReference()를 통해 가져온 객체는 ORM이 만들어낸 프록시엔티티 객체이다. 실제 데이터가 필요한 시점이 오면 DB에 쿼리를 날린다. 💡 프록시 특징 - 실제 클래스를 상속 받아서 만들어진다. - 실제 클래스와 겉 모양이 같다. (내부 데이터는 비어있다.) - 사용하는 입장에서는 이론상 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 된다. - 프록시 객체는 실제 객체의 참조(target)를 보관한다. 출처 - https://www.inflearn.com/course/ORM-JPA-Basic/das..

Web/Base

[WEB] SSR과 CSR

웹 페이지를 방문할 때, 클라이언트는 서버에 HTTP 요청을 보내게 되고, 서버에서는 응답으로 데이터를 전송합니다. 브라우저에서는 이 HTML, CSS, JS 등의 데이터를 이용하여 DOM tree, CSSOM tree와 같은 여러 트리구조를 생성하고, 클라이언트의 Layout에 맞게 화면에 그려주는 렌더링 작업을 거쳐 최종적으로 클라이언트에게 화면을 보여주게 됩니다. 이러한 구조에서 서버에서 응답으로 보내주는 데이터를 어디에서 조립하느냐에 따라 구체적인 동작 방식이 달라지게 됩니다. SSR과 CSR에 대해 알아보기 전에, 먼저 Single Page Application (SPA)과 Multi Page Application (MPA)에 대해 알아보겠습니다. SPA(Single Page Applicatio..

JPA/Base

JPA - 상속 관계 매핑

✍상속관계 매핑 관계형 DB는 상속 관계가 없음. 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사. -> 객체의 상속과 DB의 슈퍼타입 서브타입 관계를 매핑 조인 전략 - 상위 테이블과 그를 상속받는 구조의 하위 테이블을 만들고 하위 테이블의 PK, FK를 같도록 설계하여 JOIN으로 두 테이블을 가져오는 전략. 단일 테이블 전략 - 논리 모델을 한 테이블로 합치는 전략. (성능적으로 고려하기도 함 단순해서.) 구현 클래스마다 테이블 전략 - 공통되는 특성을 각 테이블에 추가하여 상위 테이블 개념을 없애는 전략. (중복되는 컬럼 존재.) => JPA는 세가지 전략을 모두 지원. 세 전략은 DB에서 테이블이 어떻게 구성되는지에 따른 차이가 있음. 클래스 설계를 바꿀 필요 없이 전략만 바꿔주면 해..

JPA/Base

JPA - 연관관계 매핑 #2

✍연관관계 매핑시 고려사항 - 테이블은 외래 키 하나로 두 테이블이 연관관계를 맺음 - 객체 양방향 관계는 A->B, B->A 처럼 참조가 2군데인 구조. 사실, 단방향 2개라고 볼 수 있다. ㆍ다중성 ㆍ단방향, 양방향 ㆍ연관관계의 주인 ❓❗ 다대일 [N:1] @ManyToONe ❓❗ 일대다 [1:N] (운영 측면에서 권장하지 않음) @OneToMany - 기본적으로 DB 설계상 일대다 관계에서 일인 쪽에 FK가 있을 수 없다. 연관관계의 주인도 마찬가지. (일 쪽에서 FK를 가지고 있으면 테이블 하나에서 다른 FK 때문에 중복 테이블이 생성되기 때문.) => 따라서, 테이블의 일대다 관계는 항상 다(N) 쪽에 외래 키가 있다. - JPA 표준 스펙에서는 '일대다 '관계 매핑을 지원. - 연관관계의 주인..

KAispread
'분류 전체보기' 카테고리의 글 목록 (15 Page)