[Spring 스프링 입문] 6. 스프링 DB 접근 기술 (1)

2023. 10. 10. 01:52·[ Development ]/[ Back-end ] Spring 기본

* H2 데이터베이스 설치

// 프로젝트 루프에 sql/ddl.sql 파일 생성
// H2 데이터베이스에 member 테이블 생성

drop table if exists member CASCADE;
create table member
(
 id bigint generated by default as identity,
 name varchar(255),
 primary key (id)
);

* 순수 JDBC

// build.gradle 파일에 jdbc, h2 데이터베이스 관련 라이브러리 추가
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
runtimeOnly 'com.h2database:h2'

// 스프링부트 데이터베이스 연결 설정 추가
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa

* 스프링 통합 테스트

package hello.hellospring.service;
import hello.hellospring.domain.Member;
import hello.hellospring.repository.MemberRepository;
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.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
@SpringBootTest
@Transactional
class MemberServiceIntegrationTest {
 @Autowired MemberService memberService;
 @Autowired MemberRepository memberRepository;
 @Test
 public void 회원가입() throws Exception {
 //Given
 Member member = new Member();
 member.setName("hello");
 //When
 Long saveId = memberService.join(member);
 //Then
 Member findMember = memberRepository.findById(saveId).get();
 assertEquals(member.getName(), findMember.getName());
 }
 @Test
 public void 중복_회원_예외() throws Exception {
 //Given
 Member member1 = new Member();
 member1.setName("spring");
 Member member2 = new Member();
 member2.setName("spring");
 //When
 memberService.join(member1);
 IllegalStateException e = assertThrows(IllegalStateException.class,
 () -> memberService.join(member2));//예외가 발생해야 한다.
 assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");
 }
}
728x90

'[ Development ] > [ Back-end ] Spring 기본' 카테고리의 다른 글

[Spring 스프링 기본] 2. 핵심 원리 이해 1 - 예제 만들기  (0) 2023.11.07
[Spring 스프링 기본] 1. 객체지향설계와 스프링  (1) 2023.10.22
[Spring 스프링 입문] JPA, AOP  (2) 2023.10.17
[Spring 스프링] 5. 회원 관리 예제 - 웹 MVC 개발  (1) 2023.10.10
[Spring 스프링] 4. 스프링 빈과 의존관계  (1) 2023.10.10
[Spring 스프링] 3. 회원 관리 예제 4 - 회원 서비스 개발 및 테스트  (1) 2023.10.03
[Spring 스프링] 3. 회원 관리 예제 3 - 회원 리포지토리 테스트 케이스 작성  (1) 2023.10.03
'[ Development ]/[ Back-end ] Spring 기본' 카테고리의 다른 글
  • [Spring 스프링 기본] 1. 객체지향설계와 스프링
  • [Spring 스프링 입문] JPA, AOP
  • [Spring 스프링] 5. 회원 관리 예제 - 웹 MVC 개발
  • [Spring 스프링] 4. 스프링 빈과 의존관계
dev charlotte
dev charlotte
주 - 컴퓨터공학 / 복수 - 산업 보안
    250x250
  • dev charlotte
    int main() {
    dev charlotte
  • 전체
    오늘
    어제
    • 분류 전체보기
      • [ Laboratory ]
        • Paper review
        • Advanced Operating System
        • System Software & Storage
        • Lab etc
      • [ Computer Science ]
        • Algorithm_C++
        • Operating System
        • Information Retrieval
        • Database_sql
        • SW Engineering
        • Computer Network
        • JavaScript
        • Python
        • Data Structure
        • CS study
        • Distributed systems
      • [ Computer Security ]
        • Convergence Security
        • Web Security
        • PIMS
        • Network Security
        • Digital Finance
      • [ Artificial Intelligence ]
        • Trend
        • Seminar
      • [ 미래, 같이, LG ]
      • [ Development ]
        • [ Front-end ]
        • [ Back-end ] Spring 기본
        • [ Back-end ] Node.js
      • etc
        • 현대오토에버 스마트 모빌리티 공학 체험 교육
      • It's me
  • 블로그 메뉴

    • 링크

      • GitHub
    • 공지사항

    • 인기 글

    • 태그

      데이터베이스
      공대생 대외활동
      현대오토에버
      spdk
      MySQL
      자바스크립트
      싸피
      프로그래머스 입문
      코드잇
      프로그래머스 c++
      프로그래머스 코테
      소프트웨어 공학
      현대오토에버 스마트모빌리티
      ssafy 13기
      코딩 교육
      오블완
      SSAFY
      현대오토에버 스마트 모빌리티
      코딩 인강
      SQL
      대학생 대외활동
      티스토리챌린지
      hotstorage
      ACM
      프로그래밍 언어론
      백준
      싸피 13기
      스마트모빌리티공학체험교육
      프로그래머스
      비전공자 코딩
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.4
    dev charlotte
    [Spring 스프링 입문] 6. 스프링 DB 접근 기술 (1)
    상단으로

    티스토리툴바