본문 바로가기
Spring Study/DataBase

[DataBase] JPA / Spring Data JPA

by 정재인 2023. 10. 3.

JPA란?

- Java Persistence API

- 자바 진영의 ORM 표준 기술

- JPA는 인터페이스 모음

- Hibernate, EclipseLink, DataNucleus 3가지 구현체 사용

 

JPA를 사용해야 하는 이유

- SQL 중심적인 개발에서 객체 중심으로 개발

- 생산성, 유지보수 편리함 / 성능 최적화 기능

 1. 1차 캐시와 동일성(identity) 보장

 2. 트랜잭션을 지원하는 쓰기 지연

 3. 지연 로징(Lazy Loading)

- 패러다임 불일치 해결

 

JPA - CRUD

- Create(저장): jpa.persist(. . .)
- Read(조회): jpa.find(. . .)
- Update(수정): member.setName(". . .")
- Delete(삭제): jpa.remove(. . .)

 

 

JPA 동작방식

저장

 

조회

 

 

ORM이란?

- Object Realational Mapping

- 객체는 객체대로, 관계형 데이터베이스는 관계형 데이터베이스로 설계

- ORM 프레임워크가 중간에서 매핑

 


Spring Data JPA란?

- spring framework에서 JPA를 좀 더 편리하게 사용할 수 있도록 제공하는 모듈이다.

- Spring Data JPA는 Hibernate와 같은 JPA 구현체를 사용해 JPA를 사용하게 된다.

- Spring Data JPA를 사용하면 더욱 간단하게 데이터 접근이 가능해진다.

 

 

Spring Data JPA 기능

메서드 이름으로 쿼리 생성

public interface MemberRepository extends Repository<Member, Long>{
    List<User> findByEmailAndName(String email, String name);
}

 

@Query

//인터페이스에 쿼리 작성 가능
public interface Userrepository extends JpaRepository<User, Long>{
    @Query("select u from User u where u.emailAddress = ?1")
    User findByEmailAddress(String emailAddress);
}

 

@Modifying

//수정 쿼리도 직접 정의 가능
@Modifying(clearAutomatically = true)
@Query("update User u set u.firstname = ?1 where u.lastname = ?2")
int setFixedFirstnameeFor(String firstname, String lastname);

댓글