[JPA] JpaRepository 인터페이스 - JPA로 CRUD 구현
스프링 데이터 JPA
스프링 데이터 JPA는 JPA를 더 편리하게 사용할 수 있도록 spring framework가 지원하는 프로젝트이다. 데이터 접근 계층을 개발할 때 반복되는 CRUD 기능들을 간편하게 사용하도록 지원해준다.
우선 CRUD를 처리하기 위한 공통 인터페이스를 제공한다. 그리고 Repository 개발 시 인터페이스만 작성하면 실행 시점에 스프링 데이터 JPA가 구현 객체를 동적으로 생성해서 주입해준다. 즉 데이터 접근 계층을 개발할 때 구현 클래스 없이 인터페이스만 작성해도 해당 인터페이스의 기능을 통해 CRUD를 구현할 수 있게 된다.
상속받을 인터페이스
JpaRepository<Entity, Id 데이터타입(pk)>
package com.cos.photogramstart.domain.user;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User,Integer>{
}
기본 메서드
findAll() 메소드 | User 테이블에서 레코드 전체 목록을 조회 List<User> 객체가 리턴 |
findById(id) | User 테이블에서 기본키 필드 값이 id인 레코드를 조회 Optional<User> 타입의 객체가 리턴 이 객체의 get 메서드를 호출하면 Member 객체가 리턴 예) User m = userRepository.findById(id).get(); |
save(member) | User 객체를 User 테이블에 저장 객체의 id(기본키) 속성값이 0이면 INSERT / 0이 아니면 UPDATE |
saveAll(memberList) | User 객체 목록을 User 테이블에 저장 |
delete(member) | User 객체의 id(기본키) 속성값과 일치하는 레코드를 삭제 |
deleteAll(memberList) | User 객체 목록을 테이블에서 삭제 |
count() | User 테이블의 전체 레코드 수를 리턴 |
exists(id) | User 테이블에서 id에 해당하는 레코드가 있는지 true/false를 리턴 |
flush() | 지금까지 User 테이블에 대한 데이터 변경 작업들이 디스크에 모두 기록 |
service로 등록한 클래스에서 만든 jparepository 사용해보기 ( 저장)
package com.cos.photogramstart.service;
import com.cos.photogramstart.domain.user.User;
import com.cos.photogramstart.domain.user.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
@Service // ioc, 트랜잭션 관리 해줌
public class AuthService {
private final UserRepository userRepository;
public User signup(User user){
//회원가입 진행
User userEntity = userRepository.save(user);
return userEntity;
}
}
'DB > JPA' 카테고리의 다른 글
[JPA] query creation 네이밍 규칙 사용하기!(SQL 조회) (0) | 2022.03.16 |
---|---|
[JPA] 회원 도메인 Entity 생성 (0) | 2022.02.13 |
댓글