본문 바로가기
JAVA

SpringBoot 설치 / h2 설치 / 쿼리 로그 세팅

by 2세1의 행복한 개발 2021. 12. 26.
반응형

SpringBoot 다운로드 URL

https://start.spring.io/

 

요즘 추세가 Maven > Gradle로 넘어가는 추세라고 합니다.

Java버전은 8하고 11을 가장 많이 쓰는데

8에서 기능이 추가된게 11이기 때문에 저는 8을 선택하였습니다.

 

 

추천 Dependencies

Lombok

getter, setter를 어노테이션을 통하여 간편하게 생성가능

 

Spring Web

각종 스프링 라이브러리 모음

 

Thymeleaf

jsp를 대신하여 사용함

 

Spring Data JPA 

JPA사용을 위해 필수 

 

H2 Database

테스트용 데이터베이스

 

 

H2 Database 다운

https://www.h2database.com/html/main.html

 

H2 Database Engine

H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar file size     Supp

www.h2database.com

 

설치 후 h2 console을 실행시키면

처음 생성은 연결을 통하여 파일 형태로 해당 데이터베이스를 생성해주셔야합니다

그 후 

jdbc:h2:tcp://localhost/~/test

주소로 바꿔줍니다. tcp를 이용해 SpringBoot에서 접속하기 때문입니다.

 

application.properties(삭제) > application.yml(생성)

properties를 삭제하고 yml로 바꿔줍니다

yml이 트리구조 형식이기 떄문에 가독성이 좋아 변경하였습니다

 

yml 자동 완성 플러그인

Setting > plugin > Spring Assistant 설치

 

폴더 구조

테스트를 위한 Entity와 Repository를 생성해줍니다.

 

MemberEntity

package com.example.demo.entity;

import lombok.Getter;
import lombok.Setter;

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

@Getter @Setter
@Entity
public class MemberEntity {

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

 

MemberRepository

package com.example.demo.repository;

import com.example.demo.entity.MemberEntity;
import org.springframework.stereotype.Repository;

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

@Repository
public class MemberRepository {

    @PersistenceContext
    private EntityManager em;

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

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

 

테스트 생성

MemberRepsitory에서 컨트롤 + 쉬프트 + T입니다

 

MemberRepositoryTest

package com.example.demo.repository;

import com.example.demo.entity.MemberEntity;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.stereotype.Repository;
import org.springframework.test.annotation.Rollback;
import org.springframework.transaction.annotation.Transactional;

import static org.junit.jupiter.api.Assertions.*;

@SpringBootTest
class MemberRepositoryTest {

    @Autowired
    MemberRepository memberRepository;

    @Transactional
    @Test
    @Rollback(false)
    public void testMember() throws Exception {

        MemberEntity member = new MemberEntity();
        member.setUsername("userTest1");

        Long saveId = memberRepository.save(member);
        MemberEntity findMember = memberRepository.find(member.getId());

        assertEquals(saveId, findMember.getId());

    }

}

 

테스트 케이스 실행

데이터 확인

 

 

insert 로그 확인

이렇게 values쪽에 ?로 데이터가 나오게 됩니다.

 

build.gradle에 추가해줍니다.

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

로그 확인

이렇게 로그에 values가 찍히게 됩니다

이게 개발단에서는 사용하기 편하지만 실서버에서는 서버쪽에 부하를 줄 수 있으니 해당 부분은 꼭 체크해주세요!

댓글