๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Back-end ๋ฐ๋ธŒ์ฝ”์Šค/week 08 TIL (Jpa)

[TIL] 221208 - JPA : SpringDataJPA

by young-ji 2022. 12. 14.

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 )

https://querydsl.com/

builder ํŒจํ„ด์„ ์ด์šฉํ•˜์—ฌ ๊ฐ์ฒด์˜ ์ฒด์ด๋‹ ๋ฐฉ์‹์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์งค์ˆ˜์žˆ๋Š” tool

 

 

 

 

์ถœ์ฒ˜ - backend dev course ๊ฐ•ํ™๊ตฌ๋‹˜

๋Œ“๊ธ€