Advertisement
Guest User

Untitled

a guest
Nov 7th, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.85 KB | None | 0 0
  1. package com.neuron.memento.config;
  2.  
  3. import org.springframework.beans.factory.annotation.Value;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.context.annotation.Configuration;
  6. import org.springframework.core.io.Resource;
  7. import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
  8. import org.springframework.jdbc.datasource.DriverManagerDataSource;
  9. import org.springframework.jdbc.datasource.init.DataSourceInitializer;
  10. import org.springframework.jdbc.datasource.init.DatabasePopulator;
  11. import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
  12. import org.springframework.orm.jpa.JpaTransactionManager;
  13. import org.springframework.orm.jpa.JpaVendorAdapter;
  14. import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
  15. import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
  16. import org.springframework.transaction.PlatformTransactionManager;
  17. import org.springframework.transaction.annotation.EnableTransactionManagement;
  18.  
  19. import javax.persistence.EntityManagerFactory;
  20. import javax.sql.DataSource;
  21. import java.util.Properties;
  22.  
  23. @Configuration
  24. @EnableTransactionManagement
  25. public class PersistenceJPAConfig {
  26.  
  27.     @Value("classpath:sql/schema.sql")
  28.     private Resource schemaSqlScript;
  29.  
  30.     @Value("classpath:sql/data.sql")
  31.     private Resource dataSqlScript;
  32.  
  33.     @Bean
  34.     public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
  35.         LocalContainerEntityManagerFactoryBean entityManager = new LocalContainerEntityManagerFactoryBean();
  36.         entityManager.setDataSource(dataSource());
  37.         entityManager.setPackagesToScan("org.neuron.memento.model");
  38.  
  39.         JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
  40.         entityManager.setJpaVendorAdapter(vendorAdapter);
  41.         entityManager.setJpaProperties(additionalProperties());
  42.  
  43.         return entityManager;
  44.     }
  45.  
  46.     private Properties additionalProperties() {
  47.         Properties properties = new Properties();
  48.         properties.setProperty("hibernate.hbm2ddl.auto", "none");
  49.         properties.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
  50.         properties.setProperty("show_sql", "true");
  51.         properties.setProperty("hibernate.temp.use_jdbc_metadata_defaults", "false");
  52.  
  53.         return properties;
  54.     }
  55.  
  56.     @Bean
  57.     public DataSource dataSource() {
  58.         DriverManagerDataSource dataSource = new DriverManagerDataSource();
  59.         dataSource.setDriverClassName("org.postgresql.Driver");
  60.         dataSource.setUrl("jdbc:postgresql://localhost:5432/memento");
  61.         dataSource.setUsername("postgres");
  62.         dataSource.setPassword("admin");
  63.         return dataSource;
  64.     }
  65.  
  66.     @Bean
  67.     public DataSourceInitializer dataSourceInitializer() {
  68.         DataSourceInitializer dataSourceInitializer = new DataSourceInitializer();
  69.         dataSourceInitializer.setDataSource(dataSource());
  70.         dataSourceInitializer.setDatabasePopulator(databasePopulator());
  71.         return dataSourceInitializer;
  72.     }
  73.  
  74.     private DatabasePopulator databasePopulator() {
  75.         ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator();
  76.         resourceDatabasePopulator.addScript(this.schemaSqlScript);
  77.         resourceDatabasePopulator.addScript(this.dataSqlScript);
  78.         return resourceDatabasePopulator;
  79.     }
  80.  
  81.     @Bean
  82.     public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
  83.         JpaTransactionManager transactionManager = new JpaTransactionManager();
  84.         transactionManager.setEntityManagerFactory(entityManagerFactory);
  85.         return transactionManager;
  86.     }
  87.  
  88.     @Bean
  89.     public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
  90.         return new PersistenceExceptionTranslationPostProcessor();
  91.     }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement