Embedded MySQL Database
빌드 의존성 추가
<dependency>
<groupId>com.wix</groupId>
<artifactId>wix-embedded-mysql</artifactId>
<version>4.6.1</version>
<scope>test</scope>
</dependency>
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();
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)
.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(버전) : 사용할 버전 명시