Skip to content

Instantly share code, notes, and snippets.

@pydawan
Forked from pascaldimassimo/DataSourceConfig.java
Created November 26, 2020 15:41
Show Gist options
  • Save pydawan/16187f6dd7883d2146bd58982f8fff63 to your computer and use it in GitHub Desktop.
Save pydawan/16187f6dd7883d2146bd58982f8fff63 to your computer and use it in GitHub Desktop.

Revisions

  1. @pascaldimassimo pascaldimassimo revised this gist Dec 30, 2014. 1 changed file with 7 additions and 7 deletions.
    14 changes: 7 additions & 7 deletions DataSourceConfig.java
    Original file line number Diff line number Diff line change
    @@ -30,8 +30,8 @@ public DataSource prodDataSource() {
    }

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.dev")
    public DataSource devDataSource() {
    @ConfigurationProperties(prefix = "spring.datasource.secondary")
    public DataSource secondaryDataSource() {
    return DataSourceBuilder.create().build();
    }

    @@ -47,13 +47,13 @@ public LocalContainerEntityManagerFactoryBean prodEntityManagerFactory(
    .build();
    }

    @Bean(name = "devEntityManagerFactory")
    public LocalContainerEntityManagerFactoryBean devEntityManagerFactory(
    @Bean(name = "secondaryEntityManagerFactory")
    public LocalContainerEntityManagerFactoryBean secondaryEntityManagerFactory(
    EntityManagerFactoryBuilder builder) {
    return builder
    .dataSource(devDataSource())
    .dataSource(secondaryDataSource())
    .packages("com.pascaldimassimo.xyz")
    .persistenceUnit("dev")
    .persistenceUnit("secondary")
    .properties(buildProperties())
    .build();
    }
    @@ -68,7 +68,7 @@ private Map<String, Object> buildProperties() {

    @Bean
    @Autowired
    @Qualifier("devEntityManagerFactory")
    @Qualifier("secondaryEntityManagerFactory")
    public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
    JpaTransactionManager txManager = new JpaTransactionManager();
    txManager.setEntityManagerFactory(emf);
  2. @pascaldimassimo pascaldimassimo created this gist Dec 30, 2014.
    77 changes: 77 additions & 0 deletions DataSourceConfig.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,77 @@
    package com.pascaldimassimo.xyz;

    import java.util.HashMap;
    import java.util.Map;

    import javax.persistence.EntityManagerFactory;
    import javax.sql.DataSource;

    import org.hibernate.cfg.ImprovedNamingStrategy;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
    import org.springframework.boot.autoconfigure.orm.jpa.EntityManagerFactoryBuilder;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Primary;
    import org.springframework.orm.jpa.JpaTransactionManager;
    import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
    import org.springframework.transaction.PlatformTransactionManager;

    @Configuration
    public class DataSourceConfig {

    @Bean
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource.prod")
    public DataSource prodDataSource() {
    return DataSourceBuilder.create().build();
    }

    @Bean
    @ConfigurationProperties(prefix = "spring.datasource.dev")
    public DataSource devDataSource() {
    return DataSourceBuilder.create().build();
    }

    @Bean(name = "entityManagerFactory")
    @Primary
    public LocalContainerEntityManagerFactoryBean prodEntityManagerFactory(
    EntityManagerFactoryBuilder builder) {
    return builder
    .dataSource(prodDataSource())
    .packages("com.pascaldimassimo.xyz")
    .persistenceUnit("prod")
    .properties(buildProperties())
    .build();
    }

    @Bean(name = "devEntityManagerFactory")
    public LocalContainerEntityManagerFactoryBean devEntityManagerFactory(
    EntityManagerFactoryBuilder builder) {
    return builder
    .dataSource(devDataSource())
    .packages("com.pascaldimassimo.xyz")
    .persistenceUnit("dev")
    .properties(buildProperties())
    .build();
    }

    private Map<String, Object> buildProperties() {
    // This is usually set by HibernateJpaAutoConfiguration
    Map<String, Object> properties = new HashMap<String, Object>();
    properties.put("hibernate.ejb.naming_strategy",
    ImprovedNamingStrategy.class.getName());
    return properties;
    }

    @Bean
    @Autowired
    @Qualifier("devEntityManagerFactory")
    public PlatformTransactionManager transactionManager(EntityManagerFactory emf) {
    JpaTransactionManager txManager = new JpaTransactionManager();
    txManager.setEntityManagerFactory(emf);
    return txManager;
    }
    }