package configs; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.datasource.DriverManagerDataSource; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.vendor.HibernateJpaDialect; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; import javax.persistence.EntityManagerFactory; import javax.sql.DataSource; import play.Logger; import play.Play; import java.util.HashMap; @Configuration @EnableTransactionManagement public class DataConfig { @Bean public EntityManagerFactory entityManagerFactory() { HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); vendorAdapter.setShowSql(true); vendorAdapter.setGenerateDdl(true); LocalContainerEntityManagerFactoryBean entityManagerFactory = new LocalContainerEntityManagerFactoryBean(); entityManagerFactory.setPackagesToScan("models"); entityManagerFactory.setJpaVendorAdapter(vendorAdapter); entityManagerFactory.setDataSource(dataSource()); entityManagerFactory.setJpaPropertyMap(new HashMap<String, String>(){{ put("hibernate.hbm2ddl.auto", "create-drop"); }}); entityManagerFactory.afterPropertiesSet(); return entityManagerFactory.getObject(); } @Bean public PlatformTransactionManager transactionManager() { JpaTransactionManager transactionManager = new JpaTransactionManager(entityManagerFactory()); return transactionManager; } @Bean public DataSource dataSource() { final DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName(Play.application().configuration().getString("db.default.driver")); dataSource.setUrl(Play.application().configuration().getString("db.default.url")); return dataSource; } }