https://www.h2database.com 

h2 버전에 맞게 설치 - External Libraries 에서 버전 확인 - 스프링 부트가 자동으로 알맞은 버전을 사용중 이므로 

 

 

h2 데이터베이스 파일 생성 방법

C:\Program Files (x86)\H2\bin\h2.bat 실행 <- h2 서버? 실행

  • jdbc:h2:~/jpashop (최초 접속시)
  • ~/jpashop.mv.db 파일 생성 확인
  • 이후 부터는 jdbc:h2:tcp://localhost/~/jpashop 이렇게 접속

 

application.yml

spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/jpashop
    username: sa
    password:
    driver-class-name: org.h2.Driver

  jpa:
    hibernate:
      ddl-auto: create # 애플리케이션 실행 시점에 테이블을 drop 하고, 다시 생성한다.
    properties:
      hibernate:
      # show_sql: true # System.out 에 하이버네이트 실행 SQL을 남긴다.
      format_sql: true

logging.level:
  org.hibernate.SQL: debug # logger를 통해 하이버네이트 실행 SQL을 남긴다.
  # org.hibernate.type: trace

yml 파일 format_sql 작동 안함 - 해결방법 아래 포스팅 참조

 

Entity

@Entity
@Getter @Setter
public class Member {

    @Id @GeneratedValue
    private Long id;
    private String username;
}

 

Repository

@Repository
public class MemberRepository {

    @PersistenceContext
    private EntityManager em;

    public Long save(Member member){
        em.persist(member);
        return member.getId();
    }

    public Member find(Long id){
        return em.find(Member.class, id);
    }
}

 

테스트 코드

//@RunWith(SpringRunner.class) JUnit4 버전 사용시 선언, 5버전은 선언X
@SpringBootTest
class MemberRepositoryTest {

    @Autowired MemberRepository memberRepository;

    @Test
    @Transactional
    @Rollback(false)
    public void testMember() throws Exception {
        //given
        Member member = new Member();
        member.setUsername("memberA");

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

        //then
        Assertions.assertThat(findMember.getId()).isEqualTo(member.getId());
        Assertions.assertThat(findMember.getUsername()).isEqualTo(member.getUsername());
        Assertions.assertThat(findMember).isEqualTo(member); //JPA 엔티티 동일성 보장
    }
}

 

자동완성 세팅 -> Live templates -> custom 폴더 생성 -> tdd 생성

change - java 선택

 

 

로깅

- 외부 라이브러리 사용

build.gradle에 추가

implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'

'프로그래밍 > SpringBoot & JPA Use1' 카테고리의 다른 글

casecade  (0) 2022.06.19
엔티티 설계시 주의점  (0) 2022.06.19
엔티티 클래스 개발  (0) 2022.06.19
도메인 분석 설계  (0) 2022.06.19
View 환경 설정  (0) 2022.06.19

+ Recent posts