728x90
반응형
Updating GET methods on User Resource to use JPA
Spring Data JPA는 일반적인 JPA 기능과는 달리
Entity를 제어하기 위해서 JPA Manager를 사용하지않고 Repository interface를 선언하도록 되어있다.
-> @Repository 선언하는 것만으로 CRUD 기능을 사용할 수 있다.
1) public interface UserRepository 생성
package com.example.restfulwebservice.user;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
// 데이터베이스에 관련된 bean임을 명시하는 어노테이션
public interface UserRepository extends JpaRepository<User,Integer> {
// JpaRepository<다룰 Entity의 타입, 기본키의 데이터 타입>
}
- JpaRepository
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package org.springframework.data.jpa.repository;
import java.util.List;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Sort;
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.QueryByExampleExecutor;
@NoRepositoryBean
public interface JpaRepository<T, ID>
extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {
List<T> findAll();
List<T> findAll(Sort var1);
List<T> findAllById(Iterable<ID> var1);
<S extends T> List<S> saveAll(Iterable<S> var1);
void flush();
<S extends T> S saveAndFlush(S var1);
void deleteInBatch(Iterable<T> var1);
void deleteAllInBatch();
T getOne(ID var1);
<S extends T> List<S> findAll(Example<S> var1);
<S extends T> List<S> findAll(Example<S> var1, Sort var2);
}
2) public class UserJpaController 클래스 생성 -> JpaRepository를 사용
package com.example.restfulwebservice.user;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/jpa")
public class UserJpaController {
@Autowired
private UserRepository userRepository;
// 전체 사용자 목록을 조회하는 findAll 메소드 사용
@GetMapping("/users")
public List<User> retrieveAllUsers(){
return userRepository.findAll();
}
}
728x90
반응형