본문 바로가기

Back/JPA10

[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.
[JPA] 연관관계 매핑, 연관관계 주인 본 포스팅은 김영한 강사의 자바 ORM 표준 JPA 프로그래밍 '기본편' 강의를 수강하며 정리한 내용임을 밝힌다. DB 테스트 환경은 H2 데이터베이스, IDE는 인텔리제이(community version)를 사용했다. "객체와 관계형 데이터베이스 테이블이 어떻게 매핑되는지를 이해하는 것"이 JPA의 핵심이라고 한다. 이 부분은 중요한 만큼 여러번 실습해보았는데, 계속 헷갈리는 부분이 있어서 정리해보려고 한다. 연관관계 매핑은 비즈니스 로직, 요구사항에 따라 개발자가 더 적절한 관계를 선택해야 하기 때문에 잘 이해하고 있어야 한다. 1. 연관관계 정의 규칙 방향 : 단방향, 양방향 (객체 참조) 연관 관계의 주인 : 양방향일 때, 연관 관계에서 관리 주체 다중성 : 다대일(N:1), 일대다(1:N), 일.. 2021. 12. 15.