JPA3 [JPA] Entity의 키 생성 전략 JPA에서 Entity의 키 생성 전략이란, 데이터베이스의 기본 키를 어떻게 설정할 지 정의하는 방식이다.키 생성 전략은 @Id와 @GeneratedValue 어노테이션으로 설정한다.이 글에서 알아볼 건 @GeneratedValue에 strategy 옵션이다. 1. IDENTITY - 데이터베이스가 기본 키를 자동으로 생성한다. - 주로 AUTO_INCREMENT 컬럼이 있는 데이터베이스에서 사용된다. - 장점 : 간단하게 설정할 수 있고, 데이터베이스가 키를 관리한다. - 단점 : 배치 처리에 비효율적일 수 있다.@Entitypublic class MyEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private.. 2025. 1. 14. [JPA] Fetch Join과 Paging 동시 사용 충돌 페이징을 하기 위해선 전체 카운트가 있어야한다.그래야 아래 사진처럼 몇페이지까지 있는지 페이징 메타 데이터 제공이 가능하다. 여기서 왜 문제가 생기냐면보통 JPA는 무조건 countQuery를 하게 되는데 JPA가 이 FETCH JOIN이 담긴 쿼리를 기반으로 countQuery를 지멋대로 작성해버린다. 그렇기 때문에 아래 코드와 같이 countQuery를 명시적으로 작성해주게 되면 이 오류가 풀리게 된다.@Query(value = "SELECT t FROM Todo t JOIN FETCH t.user u ORDER BY t.modifiedAt DESC" ,countQuery = "SELECT COUNT(t) FROM Todo t") Page findAllByOrderByModifiedAtDe.. 2025. 1. 3. [JPA] 페이징의 n+1 문제 개선하기 기존에 Like 기능 개선하기에서 기본적인 n+1문제를 개선했는데,페이징 부분의 n+1문제 개선이 남았더랜다.Like 기능의 성능 개선하기 Like 기능의 성능 개선하기고민되는 코드는 CommentLike 부분으로여러 검증을 위해 Post와 Comment, User까지 조회를 하고 있다.아래는 내가 직접 작성한 코드인데 클라이언트로부터 PathVariable로 postId와 commentId를 받고 있다.userIdheehyun0221.tistory.com 전에 썼던 글에 Fetch Join에 대한 개념이 적혀있지 않아서 Fetch Join의 동작 방식에 대해 간단히 적어보려고 한다.Fetch Join은 연관된 엔티티나 컬렉션을 한 번의 쿼리로 가져오기 위해 사용되며 보통 N+1 문제를 해결하고 성능을 .. 2025. 1. 3. 이전 1 다음