본문 바로가기
Spring

[TIL] 240328 Spring Data JPA , JpaAuditing, Query Method

by studymode 2024. 3. 28.

ORM

Object Relation Mapping

객체와 데이터베이스를 매핑해줌 (자바 클래스와 DB를 쉽게 연결)

반복적인 sql작업을 줄여주기 위해 사용

 

JPA

JPA: Java Persistence API

자바 ORM 기술에 대한 표준 명세

 

JPA의 트렌젝션

- 여러개의 sql을 하나의 트렌젝션으로 관리

- 모든 SQL이 성공적으로 수행이 되면 DB에 영구적으로 변경을 반영하지만

   SQL 중 단 하나라도 실패한다면 모든 변경을 되돌림

- DB의 데이터를 안전하게 관리

 

 

SpringBoot환경에서의 JPA

 

Spring의 트랜잭션

- Spring 프레임워크에서는 DB의 트랜잭션 개념을 애플리케이션에 적용할 수 있도록 트랜잭션 관리자를 제공

- @Transactional 애너테이션을 클래스나 메서드에 추가하면 쉽게 트랜잭션 개념을 적용할 수 있다

  • 메서드가 호출되면, 해당 메서드 내에서 수행되는 모든 DB 연산 내용은 하나의 트랜잭션으로 묶음
  • 이때, 해당 메서드가 정상적으로 수행되면 트랜잭션을 커밋하고, 예외가 발생하면 롤백
  • 클래스에 선언한 @Transactional은 해당 클래스 내부의 모든 메서드에 트랜잭션 기능을 부여

 

Spring Data JPA

- JPA를 쉽게 사용할 수 있게 만들어놓은 하나의 모듈입니다.

- JPA를 추상화시킨 Repository 인터페이스를 제공합니다.

- Spring Data JPA에서는 JpaRepository 인터페이스를 구현하는 클래스를 자동으로 생성

- 해당 인터페이스의 정보를 토대로 자동으로 SimpleJpaRepository 클래스를 생성해 주고, 이 클래스를 Spring ‘Bean’으로 등록

- 따라서 인터페이스의 구현 클래스를 직접 작성하지 않아도 JpaRepository 인터페이스를 통해 JPA의 기능을 사용 가능

- JpaRepository<"@Entity 클래스", "@Id 의 데이터 타입">를 상속받는 interface 로 선언

public interface MemoRepository extends JpaRepository<Memo, Long> {

}

🔼 Spring Data JPA 적용

 

 

 

JpaAuditing

- Spring Data JPA에서 시간에 대해서 자동으로 값을 넣어주는 기능

- TimeStamped로 시간 추가하기

- TimeStamped Entity를 만들어서 상속받을 Entity에 extends 시켜준다! (주로 메인 entity나 responseDto)

 

 

 

Query Method

- Spring Data JPA에서 메서드 이름으로 SQL을 생성할 수 있는 Query Methods 기능을 제공

- 복잡하게 sql문 작성하지 않아도 됌

  

 

 

RequestParam

https://woogienote.tistory.com/116

 

[Spring Boot] @RequestParam & @PathVariable 알아보기

🔍 @RequestParam 이란? @RequestParam은 Spring MVC에서 사용되는 어노테이션으로, HTTP 요청에서 파라미터 값을 가져오는 데 사용된다. 주로 URL 쿼리 파라미터(parameter)를 읽어오는 데에 사용된다. 클라이

woogienote.tistory.com

  @GetMapping("/memos/contents")
  public List<MemoResponseDto> getMemosByKeyword(@RequestParam("keyword") String keyword){
    return memoService.getMemosByKeyword(keyword);
  }

http://localhost:8080/api/memos/contents?keyword=수정  로 받음

 

'Spring' 카테고리의 다른 글

[TIL] 240402 SpringSecurityConfig  (0) 2024.04.03
[TIL] 240401 JWT토큰  (0) 2024.04.03
[TIL] 240205 코드 리뷰/프로젝트 복습 Product  (1) 2024.02.05
[TIL] 240204 코드 리뷰/프로젝트 복습 Category  (0) 2024.02.04
[TIL] 240203 WAS  (0) 2024.02.04