스프링부트 라이브러리 구조
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
: .을 찍어 객체 그래프를 탐색하는 거야
1 | select m.username -> 상태 필드 |
이 중에서도 JPQL 과 QueryDSL의 조합으로 사용하는 것이 좋아!!
circuit breaker가 무엇을 하는 놈인가를 보기 전에 어디에 쓰는지를 먼저 보자
MSA구조에서는 시스템을 여러개의 서비스 컴포넌트로 나누고 이러한 서비스 컴포넌트간에 호출하는 개념을 가지고 있지.
이러한 구조에서 잘 생각해보면 단점이 몇 가지 존재하는 데 그 중 하나가 장애전파가 일어날 수 있다는 점이야!
JPA에는 크게 두개의 데이터 타입이 있어!! 바로 엔티티타입과 값타입이야.
갑 타입에 대해 알아보자!!
영속성 전이란 특정 엔티리를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 사용하면 되는 개념이야
예를 들어 부모 엔티티를 persist할 때 자동으로 자식 엔티티도 함께 persist 시키고 싶을 때 말이지!
지연로딩에 대해 이야기를 하기위해서는 프록시에 대해 먼저 알아야해!
프록시가 무엇이냐??
쉽게 말하면 가짜 엔티티라고 생각할 수 있어
EntityManger를 통해 프록시 객체를 조회하기 위해서는 em.getReference() 메소드를 이용할 수 있어!! 그러면 프록시를 가져와!!
: 먼저 데이터 베이스는 원래는 상속 관계를 지원하지 않아!! But 슈퍼타입-서브타입이라는 모델링 기법이 존재하고 이녀석이 객체 상속과 비슷하게 생겼어!! 이를 이용해서 상속관계를 나타내보자!! 이렇게 된거지
그래서 상속관계 매핑은 객체의 상속구조와 데이터베이스의 슈퍼타입-서브타입 관계를 매핑하는거야!
여기에는 크게 3가지 전략이 있어
이 3가지에 대해 알아볼거야. 참고로 어떤 전략을 쓰던 jpa에서는 상관없이 전부 매핑이 가능해.
연관관계 매핑을 알아보기에 앞서 기본적인 용어를 정리하고 들어간당
단뱡향은 그냥 @OneToMany, @ManyToOne … 등 관계를 나타내는 어노테이션과 @JoinColumn(name = “blabla”) 를 통해 외래키를 매핑해주고 그냥 사용하면 돼!!
but, 양방향의 경우에는 두 관계중 연관관계의 주인을 결정해 줘야해!!
기본키를 매핑하려면 @Id 어노테이션을 필드위에 선언해주면 돼!!
추가적으로 @GeneratedValue라는 어노테이션과 함께 많이 사용하는데 이 어노테이션에 대해 알아보자!!
먼저 기본 키 매핑 방법에는 두가지가 있어!
직접할당과 자동생성