๋ฐฑ์—”๋“œ(Back-End) ๊ฐœ๋ฐœ/SpringBoot

[SpringBoot] 6.6_์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA

rabo93 2025. 2. 26. 22:35
์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA๋ฅผ ์“ฐ๋ฉด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๊ตฌํ˜„ ํด๋ž˜์Šค ์—†์ด ์ธํ„ฐํŽ˜์ด์Šค๋งŒ์œผ๋กœ ๊ฐœ๋ฐœ์„ ์™„๋ฃŒํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐ˜๋ณต ๊ฐœ๋ฐœํ•ด์˜จ ๊ธฐ๋ณธ CRUD ๊ธฐ๋Šฅ๋„ ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA๊ฐ€ ๋ชจ๋‘ ์ œ๊ณตํ•จ. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (์„ค์ •์€ ์•ž์˜ JPA ์„ค์ •๊ณผ ๋™์ผ)

 

์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA ์ œ๊ณต ๊ธฐ๋Šฅ

- ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•œ ๊ธฐ๋ณธ์ ์ธ CRUD
- findByName() , findByEmail() ์ฒ˜๋Ÿผ ๋ฉ”์„œ๋“œ ์ด๋ฆ„ ๋งŒ์œผ๋กœ ์กฐํšŒ ๊ธฐ๋Šฅ ์ œ๊ณต
- ํŽ˜์ด์ง• ๊ธฐ๋Šฅ ์ž๋™ ์ œ๊ณต

 

  • ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA ํšŒ์› ๋ฆฌํฌ์ง€ํ† ๋ฆฌ (์ธํ„ฐํŽ˜์ด์Šค)
package hello.hello_spring.repository;

import hello.hello_spring.domain.Member;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;

public interface SpringDataJpaMemberRepository extends JpaRepository<Member, Long>, MemberRepository { //์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋‹ค์ค‘์ƒ์† ๊ฐ€๋Šฅ

    //JPQL => select m from Member m where m.name = ?
    @Override
    Optional<Member> findByName(String name);
    // * ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA
    // ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•œ ๊ธฐ๋ณธ์ ์ธ CRUD์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ์ œ๊ณต
    // findByName(), findByEmail() ์ฒ˜๋Ÿผ ๋ฉ”์„œ๋“œ ์ด๋ฆ„๋งŒ์œผ๋กœ ์กฐํšŒ ๊ธฐ๋Šฅ ์ œ๊ณต
    // ํŽ˜์ด์ง• ๊ธฐ๋Šฅ ์ž๋™ ์ œ๊ณต
}

 

  • ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA ํšŒ์› ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์Šคํ”„๋ง ์„ค์ • ๋ณ€๊ฒฝ (SpringConfig)
package hello.hello_spring;

import hello.hello_spring.repository.MemberRepository;
import hello.hello_spring.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 {

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

    @Bean
    public MemberService memberService() {
        return new MemberService(memberRepository); //memberRepository ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„ฃ์Œ
    }

}

 

  • MemberServiceIntegrationTest ํ†ตํ•ฉํ…Œ์ŠคํŠธ ์„ฑ๊ณตํ•˜๋ฉด ์ •์ƒ ์ฝ”๋“œ