Advertisement
Guest User

Untitled

a guest
Feb 20th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.96 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package ru.ntik.homedb2;
  7.  
  8. import java.util.Properties;
  9. import javax.persistence.EntityManagerFactory;
  10.  
  11. import javax.sql.DataSource;
  12.  
  13. import org.apache.commons.dbcp2.BasicDataSource;
  14. import org.hibernate.SessionFactory;
  15. import org.hibernate.dialect.PostgreSQL92Dialect;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.context.annotation.Bean;
  18. import org.springframework.context.annotation.ComponentScan;
  19. import org.springframework.context.annotation.ComponentScans;
  20. import org.springframework.context.annotation.Configuration;
  21. import org.springframework.context.annotation.PropertySource;
  22. import org.springframework.core.env.Environment;
  23. import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
  24. import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
  25. import org.springframework.jdbc.datasource.DriverManagerDataSource;
  26. import org.springframework.orm.hibernate5.HibernateTransactionManager;
  27. import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
  28. import org.springframework.orm.jpa.JpaTransactionManager;
  29. import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
  30. import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
  31. import org.springframework.transaction.PlatformTransactionManager;
  32. import org.springframework.transaction.annotation.EnableTransactionManagement;
  33. import org.hibernate.cache.*;
  34. import org.hibernate.dialect.PostgreSQL9Dialect;
  35. import ru.ntik.Core.ConfigReader;
  36.  
  37. /**
  38.  *
  39.  * @author test1
  40.  */
  41. @Configuration
  42. @EnableTransactionManagement
  43. @PropertySource({"classpath:db.properties"})
  44. @ComponentScans(value = {
  45.     @ComponentScan("ru.ntik.*"),
  46.     @ComponentScan("ru.ntik.entities"),
  47.     @ComponentScan("ru.ntik.repository")
  48. })
  49.  
  50. @EnableJpaRepositories(basePackages = "ru.ntik")//, entityManagerFactoryRef = "sessionFactory")
  51. public class PersistenceJPAConfig {
  52.  
  53.     @Autowired
  54.     private Environment env;
  55.  
  56.     @Bean
  57.     public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws Exception {
  58.         HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
  59.         vendorAdapter.setGenerateDdl(false);
  60.  
  61.         LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
  62.         entityManagerFactoryBean.setDataSource(restDataSource());
  63.         //entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistence.class);
  64.         entityManagerFactoryBean.setPackagesToScan("ru.ntik.entities");
  65.         entityManagerFactoryBean.setJpaVendorAdapter(vendorAdapter);
  66.  
  67.         entityManagerFactoryBean.setJpaProperties(getHibernateProperties());
  68.  
  69.         return entityManagerFactoryBean;
  70.     }
  71.  
  72.     /*
  73.     @Bean
  74.     public LocalSessionFactoryBean sessionFactory() {
  75.         LocalSessionFactoryBean factoryBean = new LocalSessionFactoryBean();
  76.         factoryBean.setDataSource(restDataSource());
  77.         factoryBean.setPackagesToScan("ru.ntik.entities");
  78.  
  79.         Properties props = new Properties();
  80.         props.put("hibernate.show_sql", true);//env.getProperty("hibernate.show_sql"));
  81.      //   props.put("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
  82.         props.put("hibernate.dialect", PostgreSQL94Dialect.class.getName());
  83.  
  84.         props.put("hibernate.dbcp.validationQuery", "select 1");
  85.  
  86.         factoryBean.setHibernateProperties(props);
  87.         factoryBean.setAnnotatedClasses(Product.class);
  88.         return factoryBean;
  89.     }
  90.      */
  91.     @Bean
  92.     public BasicDataSource restDataSource() throws Exception {
  93.         //String ipDB = ConfigReader.gerProperties();
  94.         //String p = ConfigReader.gerPass();
  95.         //System.out.println(ipDB);
  96.         BasicDataSource dataSource = new BasicDataSource();
  97.         //DriverManagerDataSource dataSource = new DriverManagerDataSource();
  98.         dataSource.setDriverClassName(env.getProperty("db.driver"));
  99.         //dataSource.setUrl("jdbc:postgresql://" + ipDB + "/feedback_db"); //#####
  100.         dataSource.setUrl(env.getProperty("db.url"));
  101.         dataSource.setUsername(env.getProperty("db.username"));
  102.         dataSource.setPassword(env.getProperty("db.password"));
  103.         //dataSource.setPassword(p);
  104.         dataSource.setTestOnBorrow(false);
  105.         dataSource.setValidationQuery("select 1");
  106.  
  107.         Properties configProps = new Properties();
  108.         configProps.put("db.validationQuery", "SELECT 1");
  109.         configProps.put("db.testOnBorrow", true);
  110.         configProps.put("testWhileIdle", true);
  111.  
  112. //        dataSource.setConnectionProperties(configProps);
  113.         return dataSource;
  114.     }
  115.  
  116.     @Bean
  117.     @Autowired
  118.     public PlatformTransactionManager transactionManager() throws Exception {
  119.         JpaTransactionManager txJPA = new JpaTransactionManager();
  120. //        HibernateTransactionManager txManager
  121. //                = new HibernateTransactionManager();
  122. //        txManager.setSessionFactory(sessionFactory);
  123.         // txJPA.setEntityManagerFactory(sessionFactory);
  124.         txJPA.setEntityManagerFactory(entityManagerFactory().getObject());
  125.         return txJPA;
  126. //        return txManager;
  127.     }
  128.  
  129.     @Bean
  130.     public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
  131.         return new PersistenceExceptionTranslationPostProcessor();
  132.     }
  133.  
  134.     private Properties getHibernateProperties() {
  135.         Properties properties = new Properties();
  136.         properties.put("hibernate.dialect", PostgreSQL9Dialect.class.getName());//env.getRequiredProperty(PROP_HIBERNATE_DIALECT));
  137.         properties.put("hibernate.show_sql", true);//env.getRequiredProperty(PROP_HIBERNATE_SHOW_SQL));
  138.         // properties.put("hibernate.hbm2ddl.auto", false);//env.getRequiredProperty(PROP_HIBERNATE_HBM2DDL_AUTO));
  139.  
  140.         //properties.put("hibernate.cache.provider_class", "net.sf.ehcache.hibernate.SingletonEhCacheProvider");
  141.         //properties.put("hibernate.cache.region.factory_class", "net.sf.ehcache.hibernate.EhCacheRegionFactory");
  142.         properties.put("hibernate.cache.provider_class", "org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory");
  143.         properties.put("hibernate.cache.region.factory_class", "org.hibernate.cache.ehcache.EhCacheRegionFactory");
  144.         properties.put("hibernate.cache.use_second_level_cache", true);
  145.  
  146.         return properties;
  147.     }
  148.  
  149.     /*Properties hibernateProperties() {
  150.         return new Properties() {
  151.             {
  152.                 setProperty("hibernate.hbm2ddl.auto",
  153.                         env.getProperty("hibernate.hbm2ddl.auto"));
  154.                 setProperty("hibernate.dialect",
  155.                         env.getProperty("hibernate.dialect"));
  156.                 setProperty("hibernate.globally_quoted_identifiers",
  157.                         "true");
  158.             }
  159.         };
  160.     }*/
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement