snaag / TIL

https://github.com/snaag/todo3/issues
3 stars 0 forks source link

22-12-17-SAT #28

Open snaag opened 1 year ago

snaag commented 1 year ago
snaag commented 1 year ago

스프링 입문강의 > 스프링 DB 접근 기술

스프링 데이터 JPA

스프링 데이터 JPA ?

스프링 데이터 JPA 제공 클래스

image

SpringConfig.java

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);
    }
}

SpringDataJpaMemberRepository.java

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);
}