[JPA] Spring JPA 페이징 성능 향상
·
Spring/JPA
게시판의 하단에는 위의 이미지와 같이 몇 페이지부터 몇 페이지까지 있는지 볼 수 있다.  그렇다면 이러한 페이징을 하기 위해선 어떤 것을 알아야 할까? 바로 현재 페이지의 위치, 총 페이지 수이다.  총 페이지 수란, 보통 (조회된 모든 데이터 수) / (한 페이지에서 보여줄 글 수) 를 말한다.  그 말은, 위의 이미지처럼 1페이지에서 2페이지, 3, 4, 5 넘어갈 때 마다, 이전에 조회되었던 데이터를 함께 조회해야하는 것이다. 하지만 이전에 조회된 데이터는 사용하지도 않는다.  그냥 뒤에 있는 데이터를 탐색하기 위해 어쩔 수 없이 조회되는 데이터인 것이다.  보통 내가 진행했던 프로젝트는 뭐 게시글이 천만개~1억개 정도는 되는 것이 아니라서 매번 총 데이터의 수를 조회해도 상관없었지만, 실제 현업에..
[JPA] 여러 트랜잭션이 하나의 영속성 컨텍스트?
·
Spring/JPA
스레드는 서버에 요청을 보낸 사용자와 같다.  난 이 때 까지 JPA를 사용할 때, 하나의 스레드 당 하나의 영속성 컨텍스트를 부여받는다고 생각했다.  그런데 자바 ORM 표준 JPA 프로그래밍의 15장에서 이 문장을 읽고 머리가 아파졌다. 문제는 OSIV처럼 영속성 컨텍스트의 범위를 트랜잭션 범위보다 넓게 사용해서 여러 트랜잭션이 하나의 영속성 컨텍스트를 사용할 때 발생한다.- 15장, 645페이지  하지만 스레드와 영속성 컨텍스트의 관계에 대한 정보를 찾아보니까, 아래의 답변 또한 찾을 수 있었다. 영속성 컨텍스트는 스레드마다 독립적으로 생성되며, 스레드 간에 공유되지 않습니다. 따라서 개별 스레드에서 동작하는 엔티티 매니저는 각자 독립된 영속성 컨텍스트를 가지게 됩니다.- 인프런 AI 인턴   내가..
[JPA] @Embedded, @Embeddable
·
Spring/JPA
DDD를 공부하다가 한 엔티티에 여러 객체들을 사용할 일이 많아져서 방법을 찾다가 @Embedded, @Embeddable 을 사용해야 한다는 것을 봤다.  이게 뭔지, 어떨 때 사용하는지 알아보자! 😎 주문 엔티티가 다음과 같다.(참고로 도메인 주도 개발 중이기 때문에 엔티티 코드가 좀 더러워요..)@Entity@NoArgsConstructorpublic class Order { @EmbeddedId private OrderId id; private OrderState orderState; @Embedded private Orderer orderer; @ElementCollection(fetch = FetchType.LAZY) private List orderLi..