백앤드/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);
}
}