SpringBoot #2.4 JDBC - Embedded Database

텐저린티·2023년 6월 30일
0

데브코스

목록 보기
17/41

Embedded MySQL Database

  • 독립적인 테스트 환경 제공

빌드 의존성 추가

  • maven
<dependency>
		<groupId>com.wix</groupId> 
		<artifactId>wix-embedded-mysql</artifactId> 
		<version>4.6.1</version> 
		<scope>test</scope>
</dependency>
  • gradle
testImplementation "com.wix.wix-embedded-mysql:4.6.1"
EmbeddedMysql embeddedMysql;

@Configuration
@ComponentScan("...")
static class Config {
    @Bean
    public DataSource dataSource() {
        var dataSource = DataSourceBuilder.create()
                .url("jdbc:mysql://localhost:2215/test-order_mgmt")
                .username("test")
                .password("test1234!")
                .type(HikariDataSource.class)
                .build();
        // HikariCP가 풀에 커넥션(스레드)를 100개 만들어두고 시작한다는 것을 확인하기 위한 코드
        // Customer show status '%Threads%' 쿼리랑 함께 써서 확인할 수 있다.
        dataSource.setMaximumPoolSize(1000);
        dataSource.setMinimumIdle(100);
        return dataSource;
    }
}

@BeforeAll
void setup() {
    newCustomer = new Customer(UUID.randomUUID(), "test-user", "test-user@naver.com", LocalDateTime.now());
    var mysqlConfig = aMysqldConfig(v8_0_11)
            .withCharset(UTF8)
            .withPort(2215)
            .withUser("test", "test1234!")
            .withTimeZone("Asia/Seoul")
            .build();
    embeddedMysql = anEmbeddedMysql(mysqlConfig)
						// "schema.sql" 파일을 만들어야 함.
						// 테스트용 데이터베이스랑 테이블을 만들어두는것
            .addSchema("test-order_mgmt", classPathScript("schema.sql"))
            .start();
}
  • 뭔가 잘 못 될 때는 mysql 버전을 v5_7_latest로 바꾸기
    • UUID_TO_BIN → UNHEX(REPLACE(?, ‘-’, ‘’)) 쿼리 함수변경

EmbeddedMysql 객체 생성

anEmbeddedMysql 메소드

  • 전달되는 MysqldConfig 객체 통해 생성되는 Mysql 데이터베이스 설정

addSchema 메서드

  • 사용할 스키마 정의
  • 별다른 설정 없이 이름만 전달 가능
  • SchemaConfig 객체 생성해서 설정이 추가된 스키마 전달 가능

MysqldConfig 객체 생성

  • 생성할 Mysql 데이터베이스 설정 담당 객체
  • aMysqldConfig(버전) : 사용할 버전 명시
profile
개발하고 말테야

0개의 댓글

관련 채용 정보