Subversion Repositories SmartDukaan

Rev

Rev 23738 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
23723 amit.gupta 1
package com.smartdukaan.cron.config;
2
 
3
import java.util.Properties;
4
 
5
import javax.sql.DataSource;
6
 
7
import org.hibernate.SessionFactory;
8
import org.springframework.beans.factory.annotation.Autowired;
9
import org.springframework.beans.factory.annotation.Value;
10
import org.springframework.context.annotation.Bean;
11
import org.springframework.context.annotation.Configuration;
12
import org.springframework.context.annotation.PropertySource;
13
import org.springframework.jdbc.datasource.DriverManagerDataSource;
14
import org.springframework.orm.hibernate5.HibernateTransactionManager;
15
import org.springframework.orm.hibernate5.LocalSessionFactoryBuilder;
16
import org.springframework.transaction.annotation.EnableTransactionManagement;
17
 
18
@Configuration
19
@EnableTransactionManagement
20
@PropertySource("classpath:META-INF/env.properties")
21
public class DBConfig {
22
 
23
	private static final Object HIBERNATE_DIALECT = "hibernate.dialect";
24
 
25
	private static final Object HIBERNATE_SHOW_SQL = "hibernate.show_sql";
26
 
27
	private static final Object HIBERNATE_FORMAT_SQL = "hibernate.format_sql";
28
 
29
	private static final Object HIBERNATE_JDBC_BATCH_SIZE = "hibernate.jdbc.batch_size";
30
 
31
	private static final Object HIBERNATE_C3P0_MIN_SIZE = "hibernate.c3p0.min_size";
32
 
33
	private static final Object HIBERNATE_C3P0_MAX_SIZE = "hibernate.c3p0.max_size";
34
 
35
	private static final Object HIBERNATE_C3P0_TIMEOUT = "hibernate.c3p0.timeout";
36
 
37
	private static final Object HIBERNATE_C3P0_MAX_STATEMENTS = "hibernate.c3p0.max_statements";
38
 
39
	private static final Object HIBERNATE_C3P0_IDLE_TEST_PERIOD = "hibernate.c3p0.idle_test_period";
40
 
41
	@Value("${hibernate.driver.class}")
42
	private String hibernateDriverClass;
43
 
44
	@Value("${hibernate.url}")
45
	private String hibernateUrl;
46
 
47
	@Value("${hibernate.user.name}")
48
	private String hibernateUserName;
49
 
50
	@Value("${hibernate.password}")
51
	private String hibernatePassword;
52
 
53
	@Value("${hibernate.dialect}")
54
	private String hibernateDialect;
55
 
56
	@Value("${hibernate.show_sql}")
57
	private String hibernateShowSql;
58
 
59
	@Value("${hibernate.format_sql}")
60
	private String hibernateFormatSql;
61
 
62
	@Value("${hibernate.jdbc.batch_size}")
63
	private String hibernateBatchSize;
64
 
65
	@Value("${hibernate.c3p0.min_size}")
66
	private String hibernateMinSize;
67
 
68
	@Value("${hibernate.c3p0.max_size}")
69
	private String hibernateMaxSize;
70
 
71
	@Value("${hibernate.c3p0.timeout}")
72
	private String hibernateTimeout;
73
 
74
	@Value("${hibernate.c3p0.max_statements}")
75
	private String hibernateMaxStatements;
76
 
77
	@Value("${hibernate.c3p0.idle_test_period}")
78
	private String hibernateIdleTestPeriod;
79
 
80
	@Bean(name = "dataSource")
81
	public DataSource dataSource() {
82
		DriverManagerDataSource dataSource = new DriverManagerDataSource();
83
		dataSource.setDriverClassName(hibernateDriverClass);
84
		dataSource.setUrl(hibernateUrl);
85
		dataSource.setUsername(hibernateUserName);
86
		dataSource.setPassword(hibernatePassword);
87
 
88
		return dataSource;
89
	}
90
 
91
	@Bean
92
	public Properties getHibernateProperties() {
93
		Properties dbProperties = new Properties();
94
		dbProperties.put(HIBERNATE_DIALECT, hibernateDialect);
95
		dbProperties.put(HIBERNATE_SHOW_SQL, hibernateShowSql);
96
		dbProperties.put(HIBERNATE_FORMAT_SQL, hibernateFormatSql);
97
		dbProperties.put(HIBERNATE_JDBC_BATCH_SIZE, hibernateBatchSize);
98
		dbProperties.put(HIBERNATE_C3P0_MIN_SIZE, hibernateMinSize);
99
		dbProperties.put(HIBERNATE_C3P0_MAX_SIZE, hibernateMaxSize);
100
		dbProperties.put(HIBERNATE_C3P0_TIMEOUT, hibernateTimeout);
101
		dbProperties.put(HIBERNATE_C3P0_MAX_STATEMENTS, hibernateMaxStatements);
102
		dbProperties.put(HIBERNATE_C3P0_IDLE_TEST_PERIOD, hibernateIdleTestPeriod);
103
		return dbProperties;
104
	}
105
 
106
	@Autowired
107
	@Bean(name = "sessionFactory")
108
	public SessionFactory getSessionFactory(DataSource dataSource) {
109
		LocalSessionFactoryBuilder sessionBuilder = new LocalSessionFactoryBuilder(dataSource);
110
		sessionBuilder.addProperties(getHibernateProperties());
111
		sessionBuilder.scanPackages("com.spice.profitmandi.dao.*");
112
		return sessionBuilder.buildSessionFactory();
113
	}
114
 
115
	@Autowired
116
	@Bean(name = "transactionManager")
117
	public HibernateTransactionManager getTransactionManager(SessionFactory sessionFactory) {
118
		HibernateTransactionManager transactionManager = new HibernateTransactionManager(sessionFactory);
119
		return transactionManager;
120
	}
121
 
122
}