jae_coding

[Spring Project] h2 Database 환경설정 본문

Spring, java/Spring_Project

[Spring Project] h2 Database 환경설정

재코딩 2022. 8. 20. 20:48
반응형

목차

  • H2 Databae 다운로드 및 설치
  • DB 파일 생성하기
  • DB 연결 환경설정
  • DB 확인 및 테스트

1. H2 Database 다운로드 및 설치

h2 database 홈페이지

여기서 본인의 OS에 맞는 버전을 다운로드를 받는다.

 

2. DB파일 생성하기

terminal에서 h2다운로드 경로로 들어가서 h2.sh을 실행시켜준다.

 

초기 jpashop이라는 이름으로 db파일을 생성시켜준다. (지정된 경로에 jpashop.mv.db파일 생성완료)

그 뒤에부터 tcp소켓 통신을 이용하여 database에 접근하여 주면 끝!

접속화면

 

 

이런식으로 H2 Database환경설정은 끝입니다 ! 감사합니다.

 

3. DB 연결 환경설정

application.properties 파일을 지우고 본 프로젝트는 application.yml 파일을 사용하였습니다.

 

application.yml

spring: #띄어쓰기 없음
  datasource: #띄어쓰기 2칸
    url: jdbc:h2:tcp://localhost/~/jpashop #띄어쓰기 4칸
    username: sa
    password:
    driver-class-name: org.h2.Driver
  jpa: #띄어쓰기 2칸
    hibernate: #띄어쓰기 4칸
      ddl-auto: create #띄어쓰기 6칸
      properties: #띄어쓰기 4칸
      hibernate: #띄어쓰기 6칸
        show_sql: true #띄어쓰기 8칸
      format_sql: true #띄어쓰기 8칸
logging.level: #띄어쓰기 없음
  org.hibernate.SQL: debug #띄어쓰기 2칸
# org.hibernate.type: trace #띄어쓰기 2칸

4. DB 확인 및 테스트

domain(Member)

package jpabook.jpashop;

import lombok.Getter;
import lombok.Setter;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
@Getter
@Setter
public class Member {
    @Id
    @GeneratedValue
    private Long id;
    private String username;

}

repository(MemberRepository)

package jpabook.jpashop;

import org.springframework.stereotype.Repository;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Repository
public class MemberRepository {
    @PersistenceContext
    private EntityManager em;

    // command + shift + t를 이용해서 테스트 코드 작성

    //저장하는 코드
    public Long save(Member member){
        em.persist(member);
        return member.getId();
    }

    //member하나 조회
    public Member find(Long id){
        return em.find(Member.class, id);
    }

}

repositoryTest(MemberRepositoryTest)

package jpabook.jpashop;

import org.assertj.core.api.Assertions;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;

import static org.junit.Assert.*;

@SpringBootTest
@RunWith(SpringRunner.class)
public class MemberRepositoryTest {

    @Autowired MemberRepository memberRepository;

    @Test
    // Test가 끝난 후 db를 rollback한다.
    @Transactional
    //@Rollback(value = false)
    public void testMember() throws Exception {
        // given
        Member member = new Member();
        member.setUsername("memberA");

        //when
        Long saveId = memberRepository.save(member);
        Member findMember = memberRepository.find(saveId);

        //then
        Assertions.assertThat(findMember.getId()).isEqualTo(member.getId());
        Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername());
    }
}

 

테스트 결과

 

테스트 결과를 확인하게되면 Hibernate를 통하여 db에 테이블이 생성된 것을 확인할 수 있다.

테이블에는 Transactional을 이용하기때문에 변경이 되지 않은 것을 확인할 수 있다.

 

반응형
Comments