리오의 개발일지
close
프로필 사진

리오의 개발일지

github: @dldydtjs2965

  • 분류 전체보기
    • 프로젝트
    • 데이터베이스
      • Redis
      • Elasticsearch
      • RDB · SQL
    • CS
      • 알고리즘
      • 설계 · 아키텍처
      • 컴퓨터구조 · OS
      • 네트워크
    • 인공지능
      • Claude
    • Language
      • Java · JVM
      • Python
      • JavaScript · TypeScript
    • 커리어 · 일상
      • 회고
      • 이직 · 커리어
      • 세미나 · 커뮤니티
    • devops
      • aws
      • Docker · K8s · 배포
    • Spring
      • SpringBoot
      • JPA
      • 토비의 스프링 시리즈
  • 홈
  • 태그
  • 방명록
JPA 상속관계

JPA 상속관계

데이터 베이스에서 상속 관계 관계형 데이터베이스에서는 상속이라는 개념이 존재하지 않는다. 그래서 보통 슈퍼타입과 서브타입으로 분리시키는 방식으로 구현을 한다. 이러한 논리 모델을 구현하기 위해서는 세가지 방법이 존재하는데 각각 방법에 대한 장점과 단점을 알아보자 조인전략: 각각의 테이블로 변환 각각의 논리 모델을 모두 테이블로 만들고 부모테이블의 PK를 받아서 기본키와 외래키를 통해 사용하는 전략이다. 해당 방법을 사용할 때 주의할 점은 객체에서는 타입으로 구분할 수 있지만 데이터베이스에는 그런 개념이 없기 때문에 타입을 구분하는 전략을 사용해 주어야한다. Table 구조 Entity 구조 부모 클래스(Product) @Entity @Inheritance(strategy = InheritanceType...

  • format_list_bulleted Spring/JPA
  • · 2022. 9. 24.
@OneToOne 관계에서 지연로딩(LAZY)이 안되는 문제

@OneToOne 관계에서 지연로딩(LAZY)이 안되는 문제

JPA를 공부하다가 1:1 관계에서는 FetchType.LAZY 를 사용해도 지연 로딩이 되지 않고 바로 객체를 불러온다고 한다. 책에 있는 내용을 통해 해당 링크를 찾아봤지만 어떠한 원리로 일어나고 해결방법은 어떤 것이 있는지 알고 있어야 실무에 실제로 사용할 때 주의할 수 있을 것 같다. 발생 원인 class A { private Set bees; public Set getBees() { return bees; } public void setBees(Set bees) { this.bees = bees; } } class B { // Not important really } 보통 하이버네이트에서 프록시객체를 생성할 때 위와 같은 클래스 구조가 있고 하이버네이트가 Class A를 호출하게 되면 일단 초기..

  • format_list_bulleted Spring/JPA
  • · 2022. 9. 18.
(JPA) fetch join

(JPA) fetch join

fetch join이란 SQL 조인 종류 X JPQL에서 성능 최적화를 위해 제공하는 기능 연관된 엔티티나 컬렉션을 SQL 한 번을 통해 조회할 수 있다. 페치 조인 ::= [ LEFT [OUTER] | INNER ] JOIN FETCH 조인경로 엔티티 fetch join 회원을 조회하면서 연관된 팀도 함께 조회 SQL을 보면 회원 뿐만 아니라 팀(T.*)도 함께 SELECT -- [JPQL] select m from Member m join fetch m.team -- 실제 나가는 SQL SELECT M.*, T.* FROM MEMBER M INNER JOIN TEAM T ON M.TEAM_ID = T.ID SQL JPQL fetch join 사용하는 이유 String jpql = "select m f..

  • format_list_bulleted Spring/JPA
  • · 2021. 8. 12.

(JPA) 조인

조인 - 객체 끼리 조인을 통해 조인 쿼리문을 사용할 수 있다. • 내부 조인 SELECT m FROM Member m [INNER] JOIN m.team t • 외부 조인 SELECT m FROM Member m LEFT [OUTER] JOIN m.team t • 세타 조인 select count(m) from Member m, Team t where m.username = t.name 조인 - ON 절 1. 조인 대상 필터링 • 예) 회원과 팀을 조인하면서, 팀 이름이 A인 팀만 조인 JPQL SELECT m, t FROM Member m LEFT JOIN m.team t on t.name = 'A' SQL SELECT m.*, t.* FROM Member m LEFT JOIN Team t ON m...

  • format_list_bulleted Spring/JPA
  • · 2021. 7. 9.

(JPA) 페이징

페이징 - 데이터 베이스를 조회할 때 n번 부터 m번까지 조회 할 수 있도록 해주는 api 페이징 API • JPA는 페이징을 다음 두 API로 추상화 • setFirstResult(int startPosition) : 조회 시작 위치 (0부터 시작) • setMaxResults(int maxResult) : 조회할 데이터 수 example //페이징 쿼리 String jpql = "select m from Member m order by m.name desc"; List resultList = em.createQuery(jpql, Member.class) .setFirstResult(10) .setMaxResults(20) .getResultList();

  • format_list_bulleted Spring/JPA
  • · 2021. 7. 9.

(JPA) 프로젝션

프로젝션 • SELECT 절에 조회할 대상을 지정하는 것 • 프로젝션 대상: 엔티티, 임베디드 타입, 스칼라 타입(숫자, 문자등 기본 데이터 타 입) • SELECT m FROM Member m -> 엔티티 프로젝션 • SELECT m.team FROM Member m -> 엔티티 프로젝션 • SELECT m.address FROM Member m -> 임베디드 타입 프로젝션 • SELECT m.username, m.age FROM Member m -> 스칼라 타입 프로젝션 • DISTINCT로 중복 제거 프로젝션 - 여러 값 조회 ※ SELECT m.username, m.age FROM Member m 1. Query 타입으로 조회 Query query = em.CreateQuery("SELECT m...

  • format_list_bulleted Spring/JPA
  • · 2021. 7. 8.
  • navigate_before
  • 1
  • 2
  • 3
  • 4
  • 5
  • navigate_next
공지사항
전체 카테고리
  • 분류 전체보기
    • 프로젝트
    • 데이터베이스
      • Redis
      • Elasticsearch
      • RDB · SQL
    • CS
      • 알고리즘
      • 설계 · 아키텍처
      • 컴퓨터구조 · OS
      • 네트워크
    • 인공지능
      • Claude
    • Language
      • Java · JVM
      • Python
      • JavaScript · TypeScript
    • 커리어 · 일상
      • 회고
      • 이직 · 커리어
      • 세미나 · 커뮤니티
    • devops
      • aws
      • Docker · K8s · 배포
    • Spring
      • SpringBoot
      • JPA
      • 토비의 스프링 시리즈
인기 글
전체 방문자
오늘
어제
Copyright © ri5 모든 권리 보유.
SKIN: Copyright © 쭈미로운 생활 All rights reserved. Designed by JJuum.
and Current skin "dev-roo" is modified by Jin.

티스토리툴바