Na základě odpovědi Alfredos je to způsob, jak vložit databázové informace bez volání výchozího skriptu vestavěné databáze. Například to může být užitečné, když chcete automaticky vytvořit DDL pro vás - alespoň v testech.
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"/applicationContext.xml"})
public class TestClass {
@Autowired
private ApplicationContext ctx;
private JdbcTemplate template;
@Autowired
public void setDataSource(DataSource dataSource) {
template = new JdbcTemplate(dataSource);
}
private static boolean isInitialized = false;
@Before
public void runOnce() {
if (isInitialized) return;
System.out.println("Initializing database");
String script = "classpath:script.sql";
Resource resource = ctx.getResource(script);
JdbcTestUtils.executeSqlScript(template, resource, true);
isInitialized = true;
}
}
Tímto způsobem runOnce()
metoda je volána jednou a pouze jednou pro testovací běh. Pokud provedete isInitialized
pole instance (nestatické), metoda bude volána před každým testem. Tímto způsobem můžete před každým testovacím spuštěním v případě potřeby zrušit/znovu naplnit tabulky.
Všimněte si, že toto je stále poměrně rychlé a špinavé řešení a rozumný způsob zacházení s databází je v souladu s Ralphovou odpovědí.