package pl.nakiel.testowaspring.configuration; import java.util.Properties; import javax.sql.DataSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; 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.LocalSessionFactoryBean; @Configuration @EnableJpaRepositories(basePackages="pl.nakiel.testowaspring.repository") public class DatabaseConfig { @Bean @Profile("dev") public DataSource h2DataSource(){ EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); return builder.setType(EmbeddedDatabaseType.H2).build(); } @Bean @Profile("prod") public DataSource mysqlDataSource(){ DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setUrl("jdbc:mysql://localhost:3306/example"); dataSource.setDriverClassName("com.mysql.jdbc.Driver"); dataSource.setUsername("root"); dataSource.setPassword(""); return dataSource; } @Bean @Profile("dev") public LocalSessionFactoryBean h2sessionFactory(DataSource dataSource){ LocalSessionFactoryBean sfb = new LocalSessionFactoryBean(); sfb.setDataSource(dataSource); sfb.setPackagesToScan("pl.nakiel.testowaspring.domain"); Properties properties = new Properties(); properties.setProperty("dialect", "org.hibernate.dialect.H2Dialect"); properties.setProperty("show_sql", "true"); sfb.setHibernateProperties(properties); return sfb; } @Bean @Profile("prod") public LocalSessionFactoryBean mySQLsessionFactory(DataSource dataSource){ LocalSessionFactoryBean sfb = new LocalSessionFactoryBean(); sfb.setDataSource(dataSource); sfb.setPackagesToScan("pl.nakiel.testowaspring.domain"); Properties properties = new Properties(); properties.setProperty("dialect", "org.hibernate.dialect.MySQLDialect"); properties.setProperty("show_sql", "true"); sfb.setHibernateProperties(properties); return sfb; } }