반응형

JPA 3

ID생성전략 없이 Custom String ID를 만들어보자!

[기술 스택] SpringBoot + Postgresql + JPA [기존 ID생성 전략] JPA에는 3가지 전략 존재한다. 3가지 전략에 대한 간단한 설명은 아래 글에서도 언급했으니 넘어간다. https://japing.tistory.com/entry/기본키-매핑전략-Identity에-대해 기본키 매핑전략 Identity에 대해 JPA의 기본키 매핑전략에는 총 3가지가 있다! 1.Identity -DB에게 ID생성을 맡기는 방법! 2.Sequence -시퀸스를 이용하여 ID를 증가시키는 방법! 3.Table -시퀸스처럼 사용할 수 있는 테이블을 생성하여 ID를 japing.tistory.com 이번프로젝트에서는 직접 아이디를 만들어 주입하는 방식을 사용한다. 즉, ID Generator을 사용해서 ID..

재학습/JPA 2021.07.26

JPA 필요없는 쿼리가 나간다?

이상한 일이였다. 쿼리가 많이 나갈 건 알고있었던, 나의 로직. 아니나 다를까.. 속도가 너무 느렸다. 따라서 쏘는 쿼리들을 까본 결과 예상밖의 쿼리가 나가고있었다. 바로 필요없는 쿼리가 더 나가고 있었던 것..! 내가 짠 로직 상으로는 Insert쿼리만 나가면되는데, 대체 왜 Select -> Insert 순으로, 쿼리가 2번이 나가버리는걸까? [배경] 1. Custom String ID를 사용한다. (ID를 정한 상태로 Persist합니다.) 2.JpaRepository를 상속하여 사용합니다. [로직] public void myLogic(User user) { User createdUser = userRepository.save(user); createShop(createdUser.getId()); ..

재학습/JPA 2021.07.21

기본키 매핑전략 Identity에 대해

JPA의 기본키 매핑전략에는 총 3가지가 있다! 1.Identity -DB에게 ID생성을 맡기는 방법! 2.Sequence -시퀸스를 이용하여 ID를 증가시키는 방법! 3.Table -시퀸스처럼 사용할 수 있는 테이블을 생성하여 ID를 증가시키는 방법! (모든데이터베이스에 사용가능하다는 장점이 있다) Table전략은 아직 고민할 경험은 해보지못했으므로 패스하고, 재삉은 Identity나 Sequence에서 골라서 사용해왔다. 그 중에서 Sequence를 사용하는 편이긴했는데, 왜냐하면 Identity의 경우에는 Persist후에 DB와의 통신을 통해 ID값을 얻어와야하기 때문이다. 이게무슨말이냐면.. JPA의 영속성 컨텍스트 내의 1차캐시는 다음과 같은 구조를 갖고있다. 여기서 개발자가 persist를 ..

재학습/JPA 2021.07.18
반응형