Skip to content

Commit c7a1377

Browse files
author
eugenp
committed
hibernate work
1 parent e07fbcf commit c7a1377

File tree

3 files changed

+109
-1
lines changed

3 files changed

+109
-1
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
package org.baeldung.ex.mappingexception.spring;
2+
3+
import java.util.Properties;
4+
5+
import javax.sql.DataSource;
6+
7+
import org.apache.tomcat.dbcp.dbcp.BasicDataSource;
8+
import org.springframework.beans.factory.annotation.Autowired;
9+
import org.springframework.context.annotation.Bean;
10+
import org.springframework.context.annotation.ComponentScan;
11+
import org.springframework.context.annotation.Configuration;
12+
import org.springframework.context.annotation.PropertySource;
13+
import org.springframework.core.env.Environment;
14+
import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
15+
import org.springframework.orm.hibernate4.HibernateTransactionManager;
16+
import org.springframework.orm.hibernate4.LocalSessionFactoryBean;
17+
import org.springframework.transaction.annotation.EnableTransactionManagement;
18+
19+
import com.google.common.base.Preconditions;
20+
21+
@Configuration
22+
@EnableTransactionManagement
23+
@PropertySource({ "classpath:persistence-mysql.properties" })
24+
@ComponentScan({ "org.baeldung.persistence" })
25+
public class PersistenceConfig {
26+
27+
@Autowired
28+
private Environment env;
29+
30+
public PersistenceConfig() {
31+
super();
32+
}
33+
34+
@Bean
35+
public LocalSessionFactoryBean sessionFactory() {
36+
final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
37+
sessionFactory.setDataSource(restDataSource());
38+
sessionFactory.setPackagesToScan(new String[] { "org.baeldung.persistence.model2" });
39+
sessionFactory.setHibernateProperties(hibernateProperties());
40+
41+
return sessionFactory;
42+
}
43+
44+
@Bean
45+
public DataSource restDataSource() {
46+
final BasicDataSource dataSource = new BasicDataSource();
47+
dataSource.setDriverClassName(Preconditions.checkNotNull(env.getProperty("jdbc.driverClassName")));
48+
dataSource.setUrl(Preconditions.checkNotNull(env.getProperty("jdbc.url")));
49+
dataSource.setUsername(Preconditions.checkNotNull(env.getProperty("jdbc.user")));
50+
dataSource.setPassword(Preconditions.checkNotNull(env.getProperty("jdbc.pass")));
51+
52+
return dataSource;
53+
}
54+
55+
@Bean
56+
public HibernateTransactionManager transactionManager() {
57+
final HibernateTransactionManager txManager = new HibernateTransactionManager();
58+
txManager.setSessionFactory(sessionFactory().getObject());
59+
60+
return txManager;
61+
}
62+
63+
@Bean
64+
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
65+
return new PersistenceExceptionTranslationPostProcessor();
66+
}
67+
68+
final Properties hibernateProperties() {
69+
return new Properties() {
70+
{
71+
setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
72+
setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
73+
74+
// setProperty("hibernate.globally_quoted_identifiers", "true");
75+
// note: necessary in launchpad-storage, but causing problems here
76+
}
77+
};
78+
}
79+
}

spring-exceptions/src/main/resources/persistence-mysql.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ jdbc.pass=tutorialmy5ql
77
# hibernate.X
88
hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
99
hibernate.show_sql=false
10-
hibernate.hbm2ddl.auto=create-drop
10+
hibernate.hbm2ddl.auto=create
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package org.baeldung.ex.mappingexception;
2+
3+
import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic;
4+
5+
import org.baeldung.ex.mappingexception.spring.PersistenceConfig;
6+
import org.baeldung.persistence.model.Foo;
7+
import org.baeldung.persistence.service.IFooService;
8+
import org.junit.Test;
9+
import org.junit.runner.RunWith;
10+
import org.springframework.beans.factory.annotation.Autowired;
11+
import org.springframework.test.context.ContextConfiguration;
12+
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
13+
import org.springframework.test.context.support.AnnotationConfigContextLoader;
14+
15+
@RunWith(SpringJUnit4ClassRunner.class)
16+
@ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class)
17+
public class MappingExceptionIntegrationTest {
18+
19+
@Autowired
20+
private IFooService fooService;
21+
22+
// tests
23+
24+
@Test
25+
public final void givenEntityIsPersisted_thenException() {
26+
fooService.create(new Foo(randomAlphabetic(6)));
27+
}
28+
29+
}

0 commit comments

Comments
 (0)