본문 바로가기

Back/JPA11

[JPA, QueryDSL] 동적 정렬 OrderSpecifier 상황QueryDSL을 사용하여 목록을 조회하는 쿼리를 작성하던 중에 정렬 조건을 동적으로 처리해야 했다.QueryDSL로 정렬하는 정적, 동적 방법을 알아보고 정리해보겠다.  실행환경 및 버전QueryDSL: 5.0.0JDK : open JDK 11Spring Boot : 2.7.9 ✔️정적 정렬  // Sample.java의 Qclass가 생성되어 있다고 가정한다.public List findSampleList(String code) { return jpaQueryFactory.select( Projections.constructor(Sample.class, sample.no, .. 2024. 7. 31.
[JPA] 이전글, 다음글 조회(native query, QueryDSL 사용) 상황 게시판 구현을 하다보면 상세페이지에서 이전글, 다음글 바로가기를 쉽게 볼 수 있다. MSSQL, Oracle이 DB 벤더이면, 이전 행의 값을 찾거나 다음 행의 값을 찾기 위해서 사용하는 LAG, LEAD 함수로 쉽게 구현이 가능하다. 하지만 현재 JPA를 이용하여 이전글, 다음글을 구현해야 하는 상황인데 JPA는 LAG, LEAD와 같은 함수를 지원하지 않는다. 이전글, 다음글을 구현하는 방법 중 내가 찾은 방법은 두가지! 그리고 각각의 방법이 지닌 한계도 있으니 참고하여 상황에 맞는 방법을 선택하면 좋을 것 같다. 적용 ✔️1. Native Query로 구현하기 📌설명: Native Query 사용 시, Entity가 아닌 Return값을 반환받기 위해서는 Interface based Proje.. 2023. 12. 19.
[JPA, QueryDSL] intellij QClass import static 자동완성 단축키 상황 QueryDSL을 사용하는데, QClass를 import 할 때, 단축키를 이용한 자동완성이 안되고 import static~ 을 다 입력해야 해서 번거로웠다. 왜 단축키가 안먹지? 생각했는데, 역시나! 자동완성 방법이 있었다. (인텔리제이에서 가능!) 적용 ✔️1. QClass 명과 지정된 변수명을 입력한다. ✔️2. Alt + Enter (windows 기준) 후, 사진과 같이 Add static import~ 를 선택. 📌그럼 이렇게 자동으로 import static이 된다! 2023. 3. 15.
[JPA] Spring Data JPA 메소드 명명 규칙만 잘 따르면 간단한 쿼리를 해결할 수 있는 Spring Data JPA 1. 사용법 Spring Data JPA에서 구현 클래스를 만들어준다. 우리는 인터페이스만 만들고, 의존성 주입받아서 사용하면 된다. 예를 들면, 아래 코드 처럼! // public interface MemberRepository extends JpaRepository { } 여기서 주의할 점은 JpaRepository의 제네릭인데, 의로 설정해야한다. 2. 주요 메소드 -save(S) : 새로운 엔티티는 저장하고, 있는 엔티티는 병합 -delete(T) : 엔티티 하나를 삭제. 내부에서 EntitiManager.remove() 호출 -findById(Id) : 엔티티 하나를 조회, 내부에서 EntitiManager.. 2022. 3. 4.
[JPA] @OneToMany 관계에서 delete 하기 상황 TimeLine과 관계를 @OneToMany로 맺고 있는 엔티티가 아래와 같이 있다. @Getter @Setter @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @Builder @Entity(name = "time_line") public class TimeLine { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="timeline_seq") private Long timelineSeq; @ManyToOne(fetch = FetchType.LAZY) @JsonIgnore @JoinColumn(name="user_seq",nullable = fa.. 2022. 2. 25.
[JPA] 연관관계 매핑, @OneToMany @ManyToOne @OneToOne @ManyToMany 본 포스팅은 김영한 강사의 자바 ORM 표준 JPA 프로그래밍 '기본편' 강의를 수강하며 정리한 내용임을 밝힌다. DB 테스트 환경은 H2 데이터베이스, IDE는 인텔리제이(community version)를 사용했다. 다중성 4가지 종류를 알아볼 차례이다. 다대일 (주인쪽에 걸어주는 것!) 일대다 (일쪽에서 다를 조회하는 로직이 필요하다면 매핑 걸어줄것!) 일대일 다대다 (실무에서는 쓰지 말것) 아래에 등장하는 관계 예시들은 게시판(Board)과 게시글(Post)의 관계이다. 1. 다대일 @ManyToOne 가장 많이 사용하는 연관관계 다대일 단방향 [N:1] : 주인인 '다'쪽에서는 '일'쪽 참조 가능하나, 반대는 조회도 불가능! 다대일 양방향 [N:1, 1:N] : 서로 참조하면 주인아닌 쪽에서는 .. 2021. 12. 15.