|
|
@@ -0,0 +1,67 @@
|
|
|
+package pl.sudra.configuration;
|
|
|
+
|
|
|
+import jakarta.persistence.EntityManagerFactory;
|
|
|
+import org.apache.commons.dbcp2.BasicDataSource;
|
|
|
+import org.springframework.context.annotation.Bean;
|
|
|
+import org.springframework.context.annotation.Configuration;
|
|
|
+import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
|
|
|
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
|
|
+import org.springframework.orm.jpa.JpaTransactionManager;
|
|
|
+import org.springframework.orm.jpa.JpaVendorAdapter;
|
|
|
+import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
|
|
+import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
|
|
|
+import org.springframework.transaction.PlatformTransactionManager;
|
|
|
+import org.springframework.transaction.annotation.EnableTransactionManagement;
|
|
|
+
|
|
|
+import javax.sql.DataSource;
|
|
|
+import java.util.Properties;
|
|
|
+
|
|
|
+@Configuration
|
|
|
+@EnableJpaRepositories(basePackages = {"pl.sudra.repository"})
|
|
|
+@EnableTransactionManagement
|
|
|
+public class HibernatePersistenceConfiguration {
|
|
|
+ // Hibernate configuration
|
|
|
+ @Bean(name = "dataSource")
|
|
|
+ public DataSource getDataSource() {
|
|
|
+ BasicDataSource dataSource = new BasicDataSource();
|
|
|
+ dataSource.setDriverClassName("org.postgresql.Driver");
|
|
|
+ dataSource.setUrl("jdbc:postgresql://localhost:5432/postgres?characterEncoding=utf-8");
|
|
|
+ dataSource.setUsername("postgres");
|
|
|
+ dataSource.setPassword("postgres");
|
|
|
+ return dataSource;
|
|
|
+ }
|
|
|
+
|
|
|
+ private Properties getHibernateProperties() {
|
|
|
+ Properties properties = new Properties();
|
|
|
+ properties.put("hibernate.show_sql", "true");
|
|
|
+ properties.put("hibernate.hbm2ddl.auto", "update");
|
|
|
+ properties.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
|
|
|
+ properties.put("hibernate.default_schema", "public");
|
|
|
+ return properties;
|
|
|
+ }
|
|
|
+
|
|
|
+ // JPA
|
|
|
+ @Bean
|
|
|
+ public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
|
|
|
+ LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
|
|
|
+ em.setDataSource(getDataSource());
|
|
|
+ em.setPackagesToScan(new String[] { "pl.sudra.domain" });
|
|
|
+
|
|
|
+ JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
|
|
|
+ em.setJpaVendorAdapter(vendorAdapter);
|
|
|
+ em.setJpaProperties(getHibernateProperties());
|
|
|
+ return em;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
|
|
|
+ JpaTransactionManager transactionManager = new JpaTransactionManager();
|
|
|
+ transactionManager.setEntityManagerFactory(emf);
|
|
|
+ return transactionManager;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Bean
|
|
|
+ public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
|
|
|
+ return new PersistenceExceptionTranslationPostProcessor();
|
|
|
+ }
|
|
|
+}
|