Open snaag opened 1 year ago
데이터 JPA -> 스프링부트와 JPA 위에 올라감
인터페이스 만으로도 개발을 완료할 수 있음 -> 개발자는 핵심 비즈니스 로직에 집중 가능
함수 이름을 보고, JPA 의 언어로 바꿔줌
// select m from Member m where m.name = ? 로 바뀜
@Override
Optional<Member> findByName(String name);
// select m from Member m where m.name = ?, m.id = ? 로 바뀜
@Override
Optional<Member> findByNameAndId(String name, Long id);
package hello.hellospring;
import hello.hellospring.repository.*;
import hello.hellospring.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SpringConfig {
// 이러면, spring jpa 가 만들어놓은 구현체가 알아서 들어감
// 그리고 알아서 spring bean 만들어둠
// 그러면 Spring Config 에서 알아서 injection 받으면 됨
private final MemberRepository memberRepository;
@Autowired
public SpringConfig(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
// spring bean 에 등록하라는 뜻
@Bean
public MemberService memberService() {
return new MemberService(memberRepository);
}
}
package hello.hellospring.repository;
import hello.hellospring.domain.Member;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.Optional;
// interface 가 interface 를 받을 때는 extends
// SpringJPA 가 어 이런게있네~ 하고 알아서 구현체 만들어줌
public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository {
// select m from Member m where m.name = ? 로 바뀜
@Override
Optional<Member> findByName(String name);
}