SpringBoot Part4 (4)
SpringDataJPA
์คํ๋ง์์ JPA๋ฅผ ํธํ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ์ง์ํด์ฃผ๋ ํ๋ก์ ํธ
์ฟผ๋ฆฌ๊ธฐ๋ฐ ๊ฐ๋ฐ์ด ์๋ ๊ฐ์ฒด ์งํฅ ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๊ฒ ํ๋ค.
- Auto Configuration์ผ๋ก ๋ฐ์ดํฐ ์์ค ๋ฐ ํธ๋์ญ์ ๋งค๋์ ์ค์ ์ ์๋์ผ๋ก ํด์ค๋ค.
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:~/order;DB_CLOSE_ON_EXIT=FALSE
username: sa
password:
jpa:
open-in-view: false
hibernate:
ddl-auto: create-drop
show-sql: true
properties:
hibernate.format_sql: true
- JpaRepository(๋ฐ์ดํฐ ์ ์ฅ๊ณ์ธต์ ๋ํ ์ธํฐํ์ด์ค)๋ฅผ ํตํด CRUD์์ ์ ํธ๋ฆฌํ๊ฒ ํด์ค๋ค.
import org.springframework.data.jpa.repository.JpaRepository;
public interface OrderRepository extends JpaRepository<Order, String> {
}
CRUD
@Test
void test(){
Order order= new Order(); // ์ค์์์ํ
order.setUuid(UUID.randomUUID().toString());
order.setOrderStatus(OrderStatus.OPENED);
order.setCreatedBy("youngji");
order.setCratedAt(LocalDateTime.now());
orderRepository.save(order);
Order findOrder = orderRepository.findById(order.getUuid()).get();
List<Order> orders = orderRepository.findAll();
}
๋ฉ์๋ ์ฟผ๋ฆฌ
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods
๋ช ์๋ ํค์๋๋ฅผ ์ด์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ๋ง๋ค ์ ์๋ค.
public interface OrderRepository extends JpaRepository<Order, String> {
List<Order> findAllByOrderStatus(OrderStatus orderStatus);
List<Order> findAllByOrderStatusOrderByOrderDatetime(OrderStatus orderStatus);
}
์ปค์คํ ์ฟผ๋ฆฌ
Query ์ด๋ ธํ ์ด์ ์ ์ด์ฉํ์ฌ ๋ฉ์๋ ์ฟผ๋ฆฌ๋ก ์งค์ ์๋ ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ์ฌ์ฉํ ์ ์๋ค.
public interface OrderRepository extends JpaRepository<Order, String> {
@Query("SELECT o FROM Order AS o WHERE o.memo LIKE %?1%")
Optional<Order> findByMemo(String memo);
}
QueryDSL ( Native Query )
builder ํจํด์ ์ด์ฉํ์ฌ ๊ฐ์ฒด์ ์ฒด์ด๋ ๋ฐฉ์์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์งค์์๋ tool
์ถ์ฒ - backend dev course ๊ฐํ๊ตฌ๋
'Back-end ๋ฐ๋ธ์ฝ์ค > week 08 TIL (Jpa)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] 221209 - JPA : REST-API, API ๋ฌธ์ํ (0) | 2022.12.20 |
---|---|
[TIL] 221207 - JPA : ์ฐ๊ด๊ด๊ณ ๋งคํ, ๊ณ ๊ธ ๋งคํ, ํ๋ก์ (0) | 2022.12.14 |
[TIL] 221206 - JPA : ์์์ฑ ์ปจํ ์คํธ (0) | 2022.12.07 |
[TIL] 221205 - JPA : JPA ์๊ฐ (0) | 2022.12.07 |
๋๊ธ