1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package br.com.arsmachina.dao.hibernate.ioc;
16
17 import java.beans.PropertyVetoException;
18
19 import javax.sql.DataSource;
20
21 import org.hibernate.SessionFactory;
22 import org.hibernate.cfg.AnnotationConfiguration;
23 import org.springframework.config.java.annotation.Bean;
24 import org.springframework.config.java.annotation.Configuration;
25 import org.springframework.config.java.annotation.ExternalValue;
26 import org.springframework.config.java.annotation.Lazy;
27 import org.springframework.config.java.annotation.ResourceBundles;
28 import org.springframework.core.io.ClassPathResource;
29 import org.springframework.orm.hibernate3.HibernateTransactionManager;
30 import org.springframework.orm.hibernate3.LocalSessionFactoryBean;
31 import org.springframework.transaction.PlatformTransactionManager;
32
33 import com.mchange.v2.c3p0.ComboPooledDataSource;
34
35
36
37
38
39
40
41
42
43 @Configuration(defaultLazy = Lazy.TRUE)
44 @ResourceBundles( { "classpath:/datasource" })
45 public class PersistenceConfiguration {
46
47
48
49
50 public static final String HIBERNATE_CONFIGURATION_FILE = "/hibernate.cfg.xml";
51
52
53
54
55 final public static String DATABASE_URL = "database.url";
56
57
58
59
60 final public static String JDBC_DRIVER = "jdbc.driver";
61
62
63
64
65 final public static String DATABASE_USERNAME = "database.username";
66
67
68
69
70 final public static String DATABASE_PASSWORD = "database.password";
71
72
73
74
75 public PersistenceConfiguration() {
76 }
77
78
79
80
81
82
83 @Bean
84 public DataSource dataSource() {
85
86 ComboPooledDataSource dataSource = new ComboPooledDataSource();
87
88 dataSource.setJdbcUrl(getDatabaseURL());
89 dataSource.setUser(getDatabaseUsername());
90 dataSource.setPassword(getDatabasePassword());
91
92 try {
93 dataSource.setDriverClass(getJDBCDriver());
94 }
95 catch (PropertyVetoException e) {
96 throw new RuntimeException(e);
97 }
98
99 return dataSource;
100
101 }
102
103
104
105
106
107
108 @Bean
109 public SessionFactory sessionFactory() {
110
111 LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean();
112 factoryBean.setConfigurationClass(AnnotationConfiguration.class);
113 factoryBean.setConfigLocation(new ClassPathResource(HIBERNATE_CONFIGURATION_FILE));
114
115 try {
116 factoryBean.afterPropertiesSet();
117 }
118 catch (Exception e) {
119 throw new RuntimeException(e);
120 }
121
122 return (SessionFactory) factoryBean.getObject();
123
124 }
125
126
127
128
129
130
131 @Bean
132 public PlatformTransactionManager transactionManager() {
133 return new HibernateTransactionManager(sessionFactory());
134 }
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152 @ExternalValue(DATABASE_URL)
153 public String getDatabaseURL() {
154 return "value not set";
155 }
156
157
158
159
160
161
162 @ExternalValue(JDBC_DRIVER)
163 public String getJDBCDriver() {
164 return "value not set";
165 }
166
167
168
169
170
171
172 @ExternalValue(DATABASE_USERNAME)
173 public String getDatabaseUsername() {
174 return "value not set";
175 }
176
177
178
179
180
181
182 @ExternalValue(DATABASE_URL)
183 public String getDatabasePassword() {
184 return "value not set";
185 }
186
187 }