Spring Data JPA

김지윤·2023년 3월 25일
0

JPA

목록 보기
3/4

영속화 : 프로그램이 종료되어도 데이터를 저장공간에 영속적으로 저장하기 위한 행위

1. SQL mapping

2. ORM : 객체와 테이블을 매핑시킴

  • JPA : ORM 방식을 명세화한 인터페이스
    • 하이버네이트 : JPA 인터페이스를 구현한 클래스
      - Spring Data JPA : JPA를 간단하게 만든 기능(EntityManager 역할도 생략)




Spring Data JPA 사용하는 법


1. spring-boot-starter-data-jpa를 의존 설정해준다.


2. spring data jpa를 사용하는데 필요한 설정을 스프링 부트에 해준다.


3. 각 엔티티별로 인터페이스를 만들어준다.
이 인터페이스는 repository를 상속하여 만든다.

// T : 엔티티 타입
// ID : 엔티티의 식별자의 타입
public interface Repository<T, ID> {
}

4. DB를 사용하는 메소드들을 규칙에 맞게 인터페이스에 정의해준다.

  • findAll(), findByID(), save(), delete() 등의 메소드를 재정의
  • findByName(String name), findByGradeAndName(Grade g, String name) 처럼 원하는 값을 가져올 수도 있다.

주의 : findBy를 남용하면 안되고, 여러 필드를 사용해야할 경우, @Query, SQL, 스펙/QueryDSL을 사용해준다!

ex)
public interface UserRepository extends Repository<User, Long) {
	@Query("select u from User u where u.age = :age")
    List<User> findUser(@Param("age") Long age);
}
// 나이 조건을 직접 작성하고, @Param을 통해 조건을 간단하게 넣어준다.
  • 정렬 :
    • findByNameOrderByNameAsc 처럼 메서드를 사용한다.
      (Asc는 오름차순, Desc는 내림차순이다)
    • Sort sort1 = Sort.by(Sort.Order.asc("name"))로 sort1을 만들어주고, findByname에 파라미터 값으로 sort1을 넣어 정렬한다.

5. 만들어진 결과물을 필요한 곳에서 @Autowired하여 사용한다.

profile
꾸준하게 공부하고 기록하는 개발자

0개의 댓글