Prerequisites:
We will show how to configure Hyperon Engine using Spring annotated configuration (http://docs.spring.io).
Apart from standard spring boot dependencies, you need to include hyperon-runtime dependency, available in Maven Central.
<dependency> <groupId>pl.decerto</groupId> <artifactId>hyperon-runtime</artifactId> <version>${hyperon-runtime.version}</version> </dependency>
Another needed dependency is the JDBC driver to the database of choice, e.g., h2, oracle, mssql, postgresql and database connection pool managing library:
<dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>${h2-database.version}</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-dbcp2</artifactId> <version>${commons-dbcp2.version}</version> </dependency>
Add Hyperon Runtime data source properties to application.properties file.
hyperon.database.url=<jdbc_url> hyperon.database.username=<username> hyperon.database.password=<password>
Properties for versions before 2.0.0 are available here
Add required beans to your java class annotated with @Configuration:
@Autowired private Environment env; private static final Logger log = LoggerFactory.getLogger(TestConfiguration.class); @Bean public DialectRegistry getDialectRegistry() { DialectRegistry registry = new DialectRegistry(); registry.setDialect(env.getProperty("hyperon.database.dialect")); return registry; } @Bean public DialectTemplate getDialectTemplate(DialectRegistry dialectRegistry) { return dialectRegistry.create(); } @Bean(destroyMethod = "close") public DataSource getDataSource(DialectTemplate dialectTemplate) { BasicDataSource dataSource = new BasicDataSource(); dataSource.setUsername(env.getProperty("hyperon.database.username")); dataSource.setPassword(env.getProperty("hyperon.database.password")); dataSource.setUrl(env.getProperty("hyperon.database.url")); dataSource.setInitialSize(4); dataSource.setDriverClassName(dialectTemplate.getJdbcDriverClassName()); return dataSource; } @Bean(destroyMethod = "destroy") public HyperonEngineFactory getHyperonEngineFactory(DataSource dataSource) { log.info("Engine factory begin creation..."); HyperonEngineFactory hyperonEngineFactory = new HyperonEngineFactory(); hyperonEngineFactory.setDataSource(dataSource); return hyperonEngineFactory; } @Bean public HyperonEngine getHyperonEngine(HyperonEngineFactory hyperonEngineFactory) { log.info("Engine begin creation..."); return hyperonEngineFactory.create(); }
The application is ready to start. After successfully starting the application, you can see similar log output: