Export to GitHub

bounding - H2.wiki


H2

For Unit Test

  • 选取In-Memory模式H2作为单选测试的数据库
  • 创建In-Memory模式H2的Datasource的方式 JdbcConnectionPool jdbcConnectionPool = JdbcConnectionPool.create("jdbc:h2:mem:hibernate-show", "sa", ""); DataSource dataSource = jdbcConnectionPool; ...... jdbcConnectionPool.dispose();
  • 在单元测试的setUp中创建数据源后,每次重建测试数据 @Before public void setup() { jdbc.update("drop all objects"); jdbc.update("runscript from 'src/test/resources/test-schema.sql'"); jdbc.update("runscript from 'src/test/resources/test-data.sql'"); }
    • drop all objectsrunscript from 'filename'都是H2的SQL Grammar.

H2和Spring

  • Spring 3开始,整合了H2作为In-Memory数据库,可以使用JDBC命名空间在配置文件中设置。例如: <jdbc:embedded-database id="dataSource" type="H2"> <jdbc:script location="classpath:test-schema.sql"/> <jdbc:script location="classpath:test-data.sql"/> </jdbc:embedded-database>
  • 因为H2支持Mysql等数据库的兼容模式,可在连接URL中指定,故可以创建一个H2DataSourceFactoryBean用来传入兼容模式的URL.将使用H2的RunScript工具类执行数据库初始化脚本。 <bean id="dataSource" class=".H2DataSourceFactoryBean"> <property name="url" value="jdbc:h2:mem:spring-mvc-show;MODE=MYSQL"/> <property name="username" value="sa"/> <property name="password" value=""/> <property name="scriptLocations"> <array> <value>classpath:/test-schema.sql</value> <value>classpath:/test-data.sql</value> </array> </property> </bean>