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

[SpringBoot] 6.3_์Šคํ”„๋ง ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ (DB์—ฐ๊ฒฐ)

rabo93 2025. 2. 26. 02:23

์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์™€ DB๊นŒ์ง€ ์—ฐ๊ฒฐํ•˜๋Š” ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ง„ํ–‰ํ•ด๋ณด๊ธฐ!

package hello.hello_spring.service;

import hello.hello_spring.domain.Member;
import hello.hello_spring.repository.MemberRepository;
import hello.hello_spring.repository.MemoryMemberRepository;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.transaction.annotation.Transactional;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertThrows;

@SpringBootTest
@Transactional //ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์— @Transaction ์–ด๋…ธํ…Œ์ด์…˜์„ ๋ถ™์ด๋ฉด, ํ…Œ์ŠคํŠธ ์™„๋ฃŒ ํ›„ ํ…Œ์ŠคํŠธ๋ฐ์ดํ„ฐ Rollback ๊ธฐ๋Šฅ(DB์— ๋ฐ์ดํ„ฐ ์ €์žฅX)
class MemberServiceIntegrationTest {
    @Autowired MemberService memberService;
    @Autowired MemberRepository memberRepository;

    @Test
    void ํšŒ์›๊ฐ€์ž…() {
        //given
        Member member = new Member();
        member.setName("spring");

        //when
        Long saveId = memberService.join(member);

        //then
        Member findMember = memberService.findOne(saveId).get();
        assertThat(member.getName()).isEqualTo(findMember.getName());
    }
    
    @Test
    public void ์ค‘๋ณต_ํšŒ์›_์˜ˆ์™ธ() {
        //given
        Member member1 = new Member();
        member1.setName("spring");

        Member member2 = new Member();
        member2.setName("spring");

        //when
        memberService.join(member1);
        assertThrows(IllegalStateException.class, () -> memberService
                .join(member2));
    }

}

 

  • @SpringBootTest :  ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์™€ ํ…Œ์ŠคํŠธ๋ฅผ ํ•จ๊ป˜ ์‹คํ–‰ํ•œ๋‹ค
  • @Transactional : ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋ถ™์˜€์„ ๋•Œ, ํ…Œ์ŠคํŠธ ์‹œ์ž‘ ์ „์— ํŠธ๋žœ์žญ์…˜์„ ์‹œ์ž‘ํ•˜๊ณ , ํ…Œ์ŠคํŠธ ์™„๋ฃŒ ํ›„์— ํ•ญ์ƒ ๋กค๋ฐฑํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด DB์— ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚จ์ง€ ์•Š์œผ๋ฏ€๋กœ ๋‹ค์Œ ํ…Œ์ŠคํŠธ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค.

** ๋‹จ์œ„ ํ…Œ์ŠคํŠธ : ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์ธ ๋ชจ๋“ˆ, ํ•จ์ˆ˜, ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ ๋“ฑ์˜ ๊ฐœ๋ณ„์ ์ธ ๋‹จ์œ„๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ํ…Œ์ŠคํŠธ

** ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ