package com.dbnt.faisp.config.database; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.context.annotation.PropertySource; import org.springframework.core.env.Environment; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; import org.springframework.transaction.PlatformTransactionManager; import javax.sql.DataSource; import java.util.HashMap; @Configuration @EnableJpaRepositories( basePackages = "com.dbnt.faisp.main.**.repository", entityManagerFactoryRef = "masterEntityManager", transactionManagerRef = "masterTransactionManager" ) public class MainDatabaseConfig { @Autowired private Environment env; @Bean @Primary public LocalContainerEntityManagerFactoryBean masterEntityManager(){ LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean(); em.setDataSource(masterDataSource()); //Entity 패키지 경로 em.setPackagesToScan(new String[] { "com.dbnt.faisp.main.**.model" }); HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); em.setJpaVendorAdapter(vendorAdapter); //Hibernate 설정 HashMap properties = new HashMap<>(); properties.put("hibernate.hbm2ddl.auto", "none"); properties.put("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect"); em.setJpaPropertyMap(properties); return em; } @Primary @Bean @ConfigurationProperties(prefix="spring.datasource-main") public DataSource masterDataSource() { return DataSourceBuilder.create().build(); } @Primary @Bean public PlatformTransactionManager masterTransactionManager() { JpaTransactionManager transactionManager = new JpaTransactionManager(); transactionManager.setEntityManagerFactory(masterEntityManager().getObject()); return transactionManager; } }