본문 바로가기

[JPA] JpaRepository 인터페이스 - JPA로 CRUD 구현

인포꿀팁 발행일 : 2022-02-16

스프링 데이터 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

댓글