Spring Data Jpa를 시작하면서

스프링부트 라이브러리 구조

Spring-boot-starter-Web

  • spring-boot-starter-tomcat
  • spring-webmvc

spring-boot-starter-jdbc

  • spring-boot-starter-aop
  • spring-boot-starter-jdbc (HikariCp Connection Pool)
  • spring-data-jpa
Read more
객체지향쿼리언어 (JPQL) 심화 문법 (fetch join, named query, 벌크연산)

경로 표현식

: .을 찍어 객체 그래프를 탐색하는 거야

1
2
3
4
5
select m.username -> 상태 필드
from Member m
join m.team t -> 단일 값 연관 필드
join m.orders o -> 컬렉션 값 연관 필드
where t.name = '팀A
Read more
객체지향쿼리언어 JPQL에 대해 알아보자!

객체지향쿼리언어 (JPQL)

JPA의 쿼리 방법 지원

  • JPQL
  • JPA Criteria
  • QueryDSL
  • 네이티브SQL (그냥 sql 쿼리 날리는 거)
  • JDBC API 직접 사용, MyBatis, Spring JDBC Template

이 중에서도 JPQL 과 QueryDSL의 조합으로 사용하는 것이 좋아!!

Read more
Circuit Breaker와 MSA

Circuit breaker

Circuit Breaker는 어디에 쓰이는 놈인가?

circuit breaker가 무엇을 하는 놈인가를 보기 전에 어디에 쓰는지를 먼저 보자

MSA구조에서는 시스템을 여러개의 서비스 컴포넌트로 나누고 이러한 서비스 컴포넌트간에 호출하는 개념을 가지고 있지.

이러한 구조에서 잘 생각해보면 단점이 몇 가지 존재하는 데 그 중 하나가 장애전파가 일어날 수 있다는 점이야!

Read more
JPA 값 타입 대해 알아보자

값타입


JPA의 데이터 타입 분류

JPA에는 크게 두개의 데이터 타입이 있어!! 바로 엔티티타입과 값타입이야.


엔티티 타입

  • @Entity로 정의하는 객체!
  • 엔티티는 데이터가 변해도 식별자로 지속해서 추적이 가능해! 너무 당연한거지

값 타입

  • int, Integer, String 처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체
  • 식별자가 없고 값만 있기에 변경시 추적이 불가능 해!

갑 타입에 대해 알아보자!!

Read more
JPA 영속성 전이(CASECADE)와 고아객체에 대해 알아보자

JPA 영속성 전이(CASECADE)와 고아객체

영속성 전이 (CASECADE)

영속성 전이란 특정 엔티리를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 사용하면 되는 개념이야

예를 들어 부모 엔티티를 persist할 때 자동으로 자식 엔티티도 함께 persist 시키고 싶을 때 말이지!

Read more
JPA 프록시와 즉시로딩, 지연로딩에 대해 알아보자

프록시와 즉시로딩, 지연로딩

프록시

지연로딩에 대해 이야기를 하기위해서는 프록시에 대해 먼저 알아야해!

프록시가 무엇이냐??

쉽게 말하면 가짜 엔티티라고 생각할 수 있어

EntityManger를 통해 프록시 객체를 조회하기 위해서는 em.getReference() 메소드를 이용할 수 있어!! 그러면 프록시를 가져와!!

Read more
JPA 상속관계 매핑에 대해 알아보자

상속관계 매핑이란

: 먼저 데이터 베이스는 원래는 상속 관계를 지원하지 않아!! But 슈퍼타입-서브타입이라는 모델링 기법이 존재하고 이녀석이 객체 상속과 비슷하게 생겼어!! 이를 이용해서 상속관계를 나타내보자!! 이렇게 된거지

그래서 상속관계 매핑은 객체의 상속구조와 데이터베이스의 슈퍼타입-서브타입 관계를 매핑하는거야!

여기에는 크게 3가지 전략이 있어

  1. 조인전략
  2. 단일 테이블 전략
  3. 구현 클래스마다 테이블 전략

이 3가지에 대해 알아볼거야. 참고로 어떤 전략을 쓰던 jpa에서는 상관없이 전부 매핑이 가능해.

Read more
JPA 연관관계 매핑에 대해 알아보자

연관관계 용어정리와 간단한 설명

연관관계 매핑을 알아보기에 앞서 기본적인 용어를 정리하고 들어간당

  • 방향 - 단방향, 양방향
  • 다중성 - 다대일, 일대다, 일대일, 다대다
  • 연관관계의 주인 - 양방향 관계에서는 연관관계 주인이라는 것을 설정해줘야해!! 중요!!

방향 별 사용방법

단뱡향은 그냥 @OneToMany, @ManyToOne … 등 관계를 나타내는 어노테이션과 @JoinColumn(name = “blabla”) 를 통해 외래키를 매핑해주고 그냥 사용하면 돼!!

but, 양방향의 경우에는 두 관계중 연관관계의 주인을 결정해 줘야해!!

Read more
JPA와 기본 키 매핑에 관하여

JPA 기본 키 매핑

기본키를 매핑하려면 @Id 어노테이션을 필드위에 선언해주면 돼!!

추가적으로 @GeneratedValue라는 어노테이션과 함께 많이 사용하는데 이 어노테이션에 대해 알아보자!!

먼저 기본 키 매핑 방법에는 두가지가 있어!

직접할당과 자동생성

Read more