这是允许您使用基于Java的Spring配置在服务器模式下启动H2数据库的代码:
private static final String H2_JDBC_URL_TEMPLATE = "jdbc:h2:%s/target/db/sample;AUTO_SERVER=TRUE";@Value("classpath:seed-data.sql")private Resource H2_SCHEMA_script;@Value("classpath:test-data.sql")private Resource H2_DATA_script;@Value("classpath:drop-data.sql")private Resource H2_CLEANER_script;@Beanpublic DataSource dataSource(Environment env) throws Exception { return createH2DataSource();}@Autowired@Beanpublic DataSourceInitializer dataSourceInitializer(final DataSource dataSource) { final DataSourceInitializer initializer = new DataSourceInitializer(); initializer.setDataSource(dataSource); initializer.setDatabasePopulator(databasePopulator()); initializer.setDatabaseCleaner(databaseCleaner()); return initializer;}private DatabasePopulator databasePopulator() { final ResourceDatabasePopulator populator = new ResourceDatabasePopulator(); populator.addscript(H2_SCHEMA_script); populator.addscript(H2_DATA_script); return populator;}private DatabasePopulator databaseCleaner() { final ResourceDatabasePopulator populator = new ResourceDatabasePopulator(); populator.addscript(H2_CLEANER_script); return populator;}private DataSource createH2DataSource() { String jdbcUrl = String.format(H2_JDBC_URL_TEMPLATE, System.getProperty("user.dir")); JdbcDataSource ds = new JdbcDataSource();ds.setURL(jdbcUrl); ds.setUser("sa"); ds.setPassword(""); return ds;}@Beanpublic PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) { JpaTransactionManager transactionManager = new JpaTransactionManager(); transactionManager.setEntityManagerFactory(entityManagerFactory); return transactionManager;}@Beanpublic LocalContainerEntityManagerFactoryBean entityManagerFactory(Environment env) throws Exception { HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); vendorAdapter.setGenerateDdl(Boolean.TRUE); vendorAdapter.setShowSql(Boolean.TRUE); LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); factory.setPersistenceUnitName("sample"); factory.setJpaVendorAdapter(vendorAdapter); factory.setPackagesToScan("com.sample.model"); factory.setDataSource(dataSource(env)); factory.setJpaProperties(jpaProperties()); factory.setLoadTimeWeaver(new InstrumentationLoadTimeWeaver()); return factory;}Properties jpaProperties() { Properties props = new Properties(); props.put("hibernate.query.substitutions", "true 'Y', false 'N'"); props.put("hibernate.hbm2ddl.auto", "create-drop"); props.put("hibernate.show_sql", "false"); props.put("hibernate.format_sql", "true"); return props;}


