Spring Data JPA
- JPA는 java 오프젝트를 관계형 데이터 베이스에 매핑하는 java표준
- JPA는 개발자가 데이터 베이스에 데이터를 CRUD(Create, Read, Update, Delete)를 위해 SQL을 작성할 필요 없이 객체를 조작하는 것만으로 데이터베이스에 CRUD수행할 수 있게 해 줌
- 대표적인 JPA기반 구현체로 Hivernate가 있음
- Spring Data JPA는 JPA를 더 쉽게 사용할 수 있게 도와주는 모듈
JPARepository와 같은 인터페이스를 상속, 새로운 Repository 인터페이스 생성, 정해진 규칙대로 메소드명을 명명하면 Spring Data JPA가 자동으로 코드를 제공한다.
public interface TodoRepository extends JpaRepository<Todo, Long>, {
}
Query DSL
- QueryDSL은 Hibernate Query Language의 쿼리를 타입에 안전하게 생성 및 관리해 주는 JAVA 프레임워크
- QueryDSL은 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해줌
Spring Data JPA + Query DSL
build.gradle - Dependency 추가
buildscript {
ext {
queryDslVersion = "5.0.0"
}
}
...
dependencies {
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}:jakarta"
annotationProcessor(
"jakarta.persistence:jakarta.persistence-api",
"jakarta.annotation:jakarta.annotation-api",
"com.querydsl:querydsl-apt:${queryDslVersion}:jakarta")
}
사전준비
Entity생성 - Todo.java
package org.zerock.mallapi.domain;
import jakarta.persistence.*;
import lombok.*;
import java.time.LocalDate;
@Entity
@ToString
@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Table(name="tbl_todo")
public class Todo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long tno;
@Column(length = 500, nullable = false)
private String title;
private String content;
private boolean complete;
private LocalDate dueDate;
}
QueryDSL로 쿼리를 작성할 때, QType을 이용해 쿼리를 Type-Safe 하게 작성할 수 있습니다.
QType을 만들기
'Spring Boot' 카테고리의 다른 글
[Spring Boot] @RestControllerAdvice를 이용한 Spring 예외처리 (0) | 2024.05.21 |
---|---|
[Spring Boot] @Component 어노테이션 (0) | 2024.05.20 |
[Spring Boot] @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor (0) | 2024.05.15 |
[Spring Boot] 스프링 프레임워크 vs 스프링 부트 (0) | 2024.05.07 |
[Spring Boot] 스프링부트란? (0) | 2024.05.07 |