백앤드/SpringBoot + Java 간간한 백앤드 예제

[SpringBoot + Java] 간단한 백엔드(SpringData JPA)

맏리믓 2023. 7. 20. 20:45

들어가며

- DB 접근을 하면 기본적으로 자주 사용하는 쿼리문이 존재한다.

 . 예를 들면 전체를 찾는 findAll, 저장하는 save 등등...

 

- Spring 과 Jpa 를 함께 사용할 경우 JpaRepository 를 사용하게 되면 spring 이 해당 구현체를 자동으로 만들어 SpringBean 에 등록을 해 준다.

- 개발자는 이러한 기능을 사용 하기만 하면 된다.

 

- 이때 모든 프로젝트에서 공통적이지 않은 class 가 존재 한다.

 . 예를 들자면 회원 정보에서는 회원의 이름인 "name" 을 사용 하지만 도서 어플에서는 책 이름인 "Book" 을 사용 할 수도 있다.

- 이러한 경우에서는 findBy~~()(ex findByName(String name))과 같은 규칙으로 이름을 설정해주면 사용이 가능 하다.


 

SpringDataJpaMemberRepository

- 우선 Repository 를 생성 해 준다.

- 이때 구현체는 spring 이 자동으로 생성 해 주기 때문에 interface 만 생성 해 주면 된다.

 

- 이후 JpaRepository 를 이용해 생성 해 준다.

- findByName 은 위 설명과 같이 Name 으로 data 에 접근 할 때 사용한다.

package com.example.springlearn.repository;

import com.example.springlearn.domain.Member;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;

//                                                                  <T, PK(id) 의 타입>
public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long> , MemberRepository{

    @Override
    Optional<Member> findByName(String name);
}

Config 수정

- 이제 사용하기만 하면 끝난다.

- 그러기 위해 Config file 을 수정 해 보겠다.

@Configuration
public class SpringConfig {
	// Repository interface의 memberRepository 를 주입
    private final MemberRepository memberRepository;

    public SpringConfig(MemberRepository memberRepository){
        this.memberRepository = memberRepository;
    }

	//이후 이 memberRepository 를 memberService 로 넘겨 사용 하면 된다.
    @Bean
    public MemberService memberService(){
        return new MemberService(memberRepository);
    }
}