Created
March 2, 2014 05:24
-
-
Save sivaprasadreddy/9302322 to your computer and use it in GitHub Desktop.
PersistenceConfig.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.sivalabs.springapp.config; | |
import java.util.Properties; | |
import javax.persistence.EntityManagerFactory; | |
import javax.sql.DataSource; | |
import org.apache.commons.dbcp.BasicDataSource; | |
import org.springframework.beans.factory.annotation.Autowired; | |
import org.springframework.beans.factory.annotation.Value; | |
import org.springframework.context.annotation.Bean; | |
import org.springframework.context.annotation.Configuration; | |
import org.springframework.core.env.Environment; | |
import org.springframework.core.io.ClassPathResource; | |
import org.springframework.data.jpa.repository.config.EnableJpaRepositories; | |
import org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver; | |
import org.springframework.jdbc.datasource.init.DataSourceInitializer; | |
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; | |
import org.springframework.orm.hibernate4.HibernateExceptionTranslator; | |
import org.springframework.orm.jpa.JpaTransactionManager; | |
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; | |
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; | |
import org.springframework.transaction.PlatformTransactionManager; | |
import org.springframework.transaction.annotation.EnableTransactionManagement; | |
@Configuration | |
@EnableTransactionManagement | |
@EnableJpaRepositories(basePackages="com.sivalabs.springapp.repositories") | |
public class PersistenceConfig | |
{ | |
@Autowired | |
private Environment env; | |
@Value("${init-db:false}") | |
private String initDatabase; | |
@Bean | |
public PlatformTransactionManager transactionManager() | |
{ | |
EntityManagerFactory factory = entityManagerFactory().getObject(); | |
return new JpaTransactionManager(factory); | |
} | |
@Bean | |
public LocalContainerEntityManagerFactoryBean entityManagerFactory() | |
{ | |
LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); | |
HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); | |
vendorAdapter.setGenerateDdl(Boolean.TRUE); | |
vendorAdapter.setShowSql(Boolean.TRUE); | |
factory.setDataSource(dataSource()); | |
factory.setJpaVendorAdapter(vendorAdapter); | |
factory.setPackagesToScan("com.sivalabs.springapp.entities"); | |
Properties jpaProperties = new Properties(); | |
jpaProperties.put("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); | |
factory.setJpaProperties(jpaProperties); | |
factory.afterPropertiesSet(); | |
factory.setLoadTimeWeaver(new InstrumentationLoadTimeWeaver()); | |
return factory; | |
} | |
@Bean | |
public HibernateExceptionTranslator hibernateExceptionTranslator() | |
{ | |
return new HibernateExceptionTranslator(); | |
} | |
@Bean | |
public DataSource dataSource() | |
{ | |
BasicDataSource dataSource = new BasicDataSource(); | |
dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName")); | |
dataSource.setUrl(env.getProperty("jdbc.url")); | |
dataSource.setUsername(env.getProperty("jdbc.username")); | |
dataSource.setPassword(env.getProperty("jdbc.password")); | |
return dataSource; | |
} | |
@Bean | |
public DataSourceInitializer dataSourceInitializer(DataSource dataSource) | |
{ | |
DataSourceInitializer dataSourceInitializer = new DataSourceInitializer(); | |
dataSourceInitializer.setDataSource(dataSource); | |
ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator(); | |
databasePopulator.addScript(new ClassPathResource("db.sql")); | |
dataSourceInitializer.setDatabasePopulator(databasePopulator); | |
dataSourceInitializer.setEnabled(Boolean.parseBoolean(initDatabase)); | |
return dataSourceInitializer; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment