Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.pdclientmanager.config;
- import java.util.Properties;
- import javax.sql.DataSource;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.ComponentScan;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.context.annotation.PropertySource;
- import org.springframework.core.env.Environment;
- import org.springframework.core.io.ClassPathResource;
- import org.springframework.core.io.Resource;
- import org.springframework.jdbc.datasource.DriverManagerDataSource;
- import org.springframework.jdbc.datasource.init.DatabasePopulator;
- import org.springframework.jdbc.datasource.init.DatabasePopulatorUtils;
- import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
- import org.springframework.orm.hibernate5.HibernateTransactionManager;
- import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
- import org.springframework.transaction.annotation.EnableTransactionManagement;
- @Configuration
- @PropertySource("classpath:database.properties")
- @EnableTransactionManagement
- @ComponentScan(basePackages = {
- "com.pdclientmanager"
- })
- public class HibernateConfig {
- @Autowired
- private Environment environment;
- @Bean
- public LocalSessionFactoryBean getSessionFactory() {
- LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean();
- factoryBean.setDataSource(dataSource());
- factoryBean.setPackagesToScan("com.pdclientmanager.model");
- factoryBean.setHibernateProperties(hibernateProperties());
- factoryBean.setPhysicalNamingStrategy(new SnakeCaseHibernateNamingStrategy());
- return factoryBean;
- }
- public DataSource dataSource() {
- DriverManagerDataSource dataSource = new DriverManagerDataSource();
- dataSource.setDriverClassName(environment.getRequiredProperty("jdbc.driverClassName"));
- dataSource.setUrl(environment.getRequiredProperty("jdbc.url"));
- dataSource.setUsername(environment.getRequiredProperty("jdbc.username"));
- dataSource.setPassword(environment.getRequiredProperty("jdbc.password"));
- Resource initSchema = new ClassPathResource("schema.sql");
- DatabasePopulator databasePopulator = new ResourceDatabasePopulator(initSchema);
- DatabasePopulatorUtils.execute(databasePopulator, dataSource);
- Resource initData = new ClassPathResource("data.sql");
- databasePopulator = new ResourceDatabasePopulator(initData);
- DatabasePopulatorUtils.execute(databasePopulator, dataSource);
- // DatabasePopulatorUtils.execute(databasePopulator(), dataSource);
- return dataSource;
- }
- // private DatabasePopulator databasePopulator() {
- // ResourceDatabasePopulator databasePopulator = new ResourceDatabasePopulator();
- // databasePopulator.setContinueOnError(true);
- // databasePopulator.addScript(new ClassPathResource("schema.sql"));
- // return databasePopulator;
- // }
- private Properties hibernateProperties() {
- Properties properties = new Properties();
- properties.put("hibernate.dialect", environment.getRequiredProperty("hibernate.dialect"));
- properties.put("hibernate.show_sql", environment.getRequiredProperty("hibernate.show_sql"));
- properties.put("hibernate.format_sql", environment.getRequiredProperty("hibernate.format_sql"));
- properties.put("hibernate.c3p0.min_size", environment.getRequiredProperty("hibernate.c3p0.min_size"));
- properties.put("hibernate.c3p0.max_size", environment.getRequiredProperty("hibernate.c3p0.max_size"));
- properties.put("hibernate.c3p0.acquire_increment", environment.getRequiredProperty("hibernate.c3p0.acquire_increment"));
- properties.put("hibernate.c3p0.acquireRetryDelay", environment.getRequiredProperty("hibernate.c3p0.acquireRetryDelay"));
- properties.put("hibernate.c3p0.max_statements", environment.getRequiredProperty("hibernate.c3p0.max_statements"));
- return properties;
- }
- @Bean
- public HibernateTransactionManager getTransactionManager() {
- HibernateTransactionManager transactionManager = new HibernateTransactionManager();
- transactionManager.setSessionFactory(getSessionFactory().getObject());
- return transactionManager;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement