두 손끝의 창조자

EmbeddedDatabase 사용하기 본문

Spring

EmbeddedDatabase 사용하기

codinglog 2021. 5. 25. 17:12

EmbeddedDatabase는 테스트 할 때 유용하게 쓸 수 있다.

나는 이것을 내가 만든 코드가 트랜잭션이 잘 동작하는지 확인하고자 할 때 사용했다.

EmbeddedDatabase 는 자체로 DataSource 이어서 스프링의 트랜잭션 매니저나 JdbcTemplete 에 바로 사용할 수 있다. 하지만 트랜잭션테스트를 하기 위해서는 그대로 사용하면 build 할 때마다 다른 데이터베이스가 생겨 스키마를 공유할 수가 없게된다.

그래서 EmbeddedDatabase 는 진짜 디비만 생성하고 데이터 소스는 이를 참고하여 만든뒤 그 것을 활용하는것이 좋겠다.

EmbeddedDatabase database = new EmbeddedDatabaseBuilder()
.generateUniqueName(true)
.setType(EmbeddedDatabaseType.H2)
.setScriptEncoding("UTF-8")
.ignoreFailedDrops(true)
.addScript("schema.sql")
.build();

이렇게 디비를 만들어서

DataSource dataSource = new SingleConnectionDataSource(database.getConnection(), true);

이렇게 데이터 소스를 만들어서 사용한다.

그러면 디비를 같이 쓰면서 다른 데이터 소스를 사용하게 되어 서로 다른 유저가 같은 데이터베이스에 접근 했을 때 트랜잭션 처리 등을 테스트하기 용이하다.

반응형
Comments