Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.neuron.memento.config;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.core.io.Resource;
- import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
- import org.springframework.jdbc.datasource.DriverManagerDataSource;
- import org.springframework.jdbc.datasource.init.DataSourceInitializer;
- import org.springframework.jdbc.datasource.init.DatabasePopulator;
- import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
- 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.persistence.EntityManagerFactory;
- import javax.sql.DataSource;
- import java.util.Properties;
- @Configuration
- @EnableTransactionManagement
- public class PersistenceJPAConfig {
- @Value("classpath:sql/schema.sql")
- private Resource schemaSqlScript;
- @Value("classpath:sql/data.sql")
- private Resource dataSqlScript;
- @Bean
- public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
- LocalContainerEntityManagerFactoryBean entityManager = new LocalContainerEntityManagerFactoryBean();
- entityManager.setDataSource(dataSource());
- entityManager.setPackagesToScan("org.neuron.memento.model");
- JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
- entityManager.setJpaVendorAdapter(vendorAdapter);
- entityManager.setJpaProperties(additionalProperties());
- return entityManager;
- }
- private Properties additionalProperties() {
- Properties properties = new Properties();
- properties.setProperty("hibernate.hbm2ddl.auto", "none");
- properties.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
- properties.setProperty("show_sql", "true");
- properties.setProperty("hibernate.temp.use_jdbc_metadata_defaults", "false");
- return properties;
- }
- @Bean
- public DataSource dataSource() {
- DriverManagerDataSource dataSource = new DriverManagerDataSource();
- dataSource.setDriverClassName("org.postgresql.Driver");
- dataSource.setUrl("jdbc:postgresql://localhost:5432/memento");
- dataSource.setUsername("postgres");
- dataSource.setPassword("admin");
- return dataSource;
- }
- @Bean
- public DataSourceInitializer dataSourceInitializer() {
- DataSourceInitializer dataSourceInitializer = new DataSourceInitializer();
- dataSourceInitializer.setDataSource(dataSource());
- dataSourceInitializer.setDatabasePopulator(databasePopulator());
- return dataSourceInitializer;
- }
- private DatabasePopulator databasePopulator() {
- ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator();
- resourceDatabasePopulator.addScript(this.schemaSqlScript);
- resourceDatabasePopulator.addScript(this.dataSqlScript);
- return resourceDatabasePopulator;
- }
- @Bean
- public PlatformTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
- JpaTransactionManager transactionManager = new JpaTransactionManager();
- transactionManager.setEntityManagerFactory(entityManagerFactory);
- return transactionManager;
- }
- @Bean
- public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
- return new PersistenceExceptionTranslationPostProcessor();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement