@PropertySource({ "classpath:dbconfig.properties" })
@ComponentScan({ ApplicationConstants.MODEL_OBJ_LOCATION })
public class HibernateConfig {
@Autowired
private Environment env;
@Bean
public LocalSessionFactoryBean sessionFactory() {
final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(restDataSource());
sessionFactory.setPackagesToScan(new String[] { ApplicationConstants.MODEL_OBJ_LOCATION});
sessionFactory.setHibernateProperties(hibernateProperties());
return sessionFactory;
}
@Bean
public DataSource restDataSource() {
final BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(env .getProperty(ApplicationConstants.DB_DRIVER_CLASS_PROPERTY_NAME));
dataSource.setUrl(env.getProperty(ApplicationConstants.DB_URL_PROPERTY_NAME));
dataSource.setUsername(env .getProperty(ApplicationConstants.DB_USER_NAME_PROPERTY_NAME));
dataSource.setPassword(env .getProperty(ApplicationConstants.DB_PASSWORD_PROPERTY_NAME));
dataSource.setInitialSize(Integer.parseInt(env
.getProperty(ApplicationConstants.DB_INITIAL_POOL_SIZE)));
dataSource.setMaxActive(Integer.parseInt(env
.getProperty(ApplicationConstants.DB_MAX_ACTIVE_POOL_SIZE)));
dataSource.setMaxIdle(Integer.parseInt(env
.getProperty(ApplicationConstants.DB_MAX_IDLE_POOL_SIZE)));
dataSource.setMinIdle(Integer.parseInt(env
.getProperty(ApplicationConstants.DB_MIN_IDLE_POOL_SIZE)));
dataSource.setDefaultAutoCommit(false);
return dataSource;
}
@Bean
public HibernateTransactionManager transactionManager() {
final HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(sessionFactory().getObject());
return txManager;
}
@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
return new PersistenceExceptionTranslationPostProcessor();
}
Properties hibernateProperties() {
return new Properties() {
/**
* Default serial version ID
*/
private static final long serialVersionUID = 1L;
{
setProperty(ApplicationConstants.HIBERNATE_HBM2DDL,
env.getProperty(ApplicationConstants.HIBERNATE_HBM2DDL));
setProperty(ApplicationConstants.HIBERNATE_DIALECT,
env.getProperty(ApplicationConstants.HIBERNATE_DIALECT));
setProperty( ApplicationConstants.HIBERNATE_GLOBALY_QUOTED_IDENTIFIERS,
env.getProperty(ApplicationConstants.HIBERNATE_GLOBALY_QUOTED_IDENTIFIERS ));
}
};
}
}