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
@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 |