Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package uk.ac.ebi.ep.data.testConfig; import java.sql.SQLException; import java.util.Properties; import javax.sql.DataSource; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; import org.springframework.orm.hibernate4.HibernateExceptionTranslator; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.vendor.Database; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; import uk.ac.ebi.ep.testkit.TestKit; /** *configuration for integration test * @author joseph */ @Configuration @EnableTransactionManagement @EnableJpaRepositories("uk.ac.ebi.ep.data.repositories") @PropertySource({ "classpath:data.sql", "classpath:schema.sql" }) public class SpringDataMockConfig extends TestKit { protected static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(SpringDataMockConfig.class); @Bean public HibernateExceptionTranslator hibernateExceptionTranslator() { return new HibernateExceptionTranslator(); } @Bean public DataSource dataSource() { EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); builder.setType(EmbeddedDatabaseType.H2); //return builder.build(); //return builder.addDefaultScripts().build(); return builder.addScript("classpath:schema.sql").addScript("classpath:data.sql").build(); } @Bean public DataSource defaultDataSource() throws SQLException { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("org.h2.Driver"); dataSource.setUrl("jdbc:h2:mem:enzymePortal"); dataSource.setUsername("sa");//not important to secure dataSource.setPassword("");//default - not important to secure return dataSource; } @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory() { Properties properties = new Properties(); properties.setProperty("hibernate.cache.provider_class", "org.hibernate.cache.NoCacheProvider"); properties.setProperty("hibernate.format_sql", "true"); properties.setProperty(" hibernate.dialect", "org.hibernate.dialect.H2Dialect"); //properties.setProperty("hibernate.hbm2ddl.auto", "create-drop"); //properties.setProperty("hibernate.ejb.naming_strategy", "org.hibernate.cfg.ImprovedNamingStrategy"); properties.setProperty("spring.jpa.hibernate.ddl-auto", "update"); HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); vendorAdapter.setDatabase(Database.H2); vendorAdapter.setGenerateDdl(true); vendorAdapter.setShowSql(false); LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); factory.setJpaVendorAdapter(vendorAdapter); factory.setJpaProperties(properties); factory.setPackagesToScan("uk.ac.ebi.ep.data.domain"); factory.setDataSource(dataSource()); return factory; } @Bean public PlatformTransactionManager transactionManager() { JpaTransactionManager txManager = new JpaTransactionManager(); txManager.setEntityManagerFactory(entityManagerFactory().getObject()); return txManager; } }