Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

Spring Data JPA 본문

Spring Boot

Spring Data JPA

Seung__ 2021. 7. 24. 00:10

Spring Data JPA사용하면 와..이게되네?

 

Spring Data JPA는 JPA를 활용하기 쉽게 도와주는 라이브러리임.

 

핵심은 JPA라는것을 잊지 말자.

 

1. SpringDataMemberRepository interface


 

인터페이스를 하나 만들자! JpaRepository와 이전에 만들어둔 MemberRepository를 상속 받는다.

public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository{

    @Override
    Optional<Member> findById(Long aLong);
}

간단하게 선언하는 것으로 사용이 가능하다.

 

그리고 JpaRepository를 상속받는 인터페이서는 스프링 데이터 JPA가 구현체를 만들고 스프링 빈으로 등록한다.

 

이제 가져다가 쓰면 된다.

 

2. SpringConfig


 

이전에는 memberRepository를 별도로 bean으로 등록하고 원하는 Repository를 return을 했다.

 

하지만 스프링 데이터 JPA가 JpaRepository를 상속한 interface의 구현체를 만들어 스프링 빈에 등록시키기 때문에,

우리는 생성자를 통해 해당 구현체를 주입받으면 된다.

 

@Configuration
public class SpringConfig {

    private final MemberRepository memberRepository;

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


    @Bean
    public MemberService memberService(){
        return new MemberService(memberRepository);
    }

/*    @Bean
    public MemberRepository memberRepository(){

        //return new MemoryMemberRepository();
        //return new JdbcMemberRepository(dataSource);
        //return new JdbcTemplateMemberRepository(dataSource);
        //return new JpaMemberRepository(em);
    }

 */
}

 

3. 통합 테스트


성공쓰

 

4. JpaRepository


 

대부분 CRUD 메서드는 공통으로 제공해준다.

 

근데 못하는 것들도 있다.

 

예를들어 findByName, findByUserId 등등은 공통으로 제공하지 못한다.

 

하지만 이런 메서드들도 선언만 해줘도 사용이 가능하다.

 

예를들어 위에서 사용한 findByName을 선언한다고 보자.

 

스프링 데이터 JPA가 네이밍 규칙에 의해 JPQL을 자동으로 생성한다.

findByName --> select m from Member m where m.name = ?

 

복잡하고 어려운 쿼리는 Native Query나 JdbcTemplate를 사용한다.

 

 

Native Query

@Query @Query를 사용하는 이유!에 대해 알아보자  1. 이름이 길어지는 경우 가독성을 좋게 변경하기 위해 다음과 같이 이름이 굉장히 킨 query method가 있다고 해보자. List findByCategoryIsNull AndNameEqual..

bsh-developer.tistory.com

 

5. GitHub : 210723,spring data jpa


 

 

GitHub - bsh6463/SpringBootClass

Contribute to bsh6463/SpringBootClass development by creating an account on GitHub.

github.com

 

'Spring Boot' 카테고리의 다른 글

AOP  (0) 2021.07.24
JdbcTemplate  (0) 2021.07.23
스프링 통합 테스트  (0) 2021.07.23
Jdbc활용하여 Application에서 DB로 넘겨보자.  (0) 2021.07.23
H2 Database 설치 및 사용 법  (0) 2021.07.23
Comments