Fabio Ebner
Fabio Ebner

Reputation: 2783

Springboot with HikariDataSource

I'm trying to use Spring Boot with HikariDataSource, but I'm getting the error. Broken pipe how is it better to configure or is it better to use c3p0? I'm using this config

spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.maxLifetime=200000
spring.datasource.idleTimeout=200000
spring.jpa.database=POSTGRESQL
spring.datasource.maximumPoolSize=5
spring.datasource.maxActive=5
spring.datasource.platform=postgres
spring.jpa.show-sql=false
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.datasource.driver-class-name=org.postgresql.Driver
#spring.datasource.url=jdbc:postgresql://localhost:5432/db_dnaso
spring.datasource.url=jdbc:postgresql://172.16.1.10:5432/db_dnaso
#spring.datasource.url=jdbc:postgresql://ci.lumera.com.br:5432/db_dnaso
spring.datasource.username=postgres
spring.datasource.password=dna44100

and I use:

<dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>2.5.1</version>
        </dependency>

and springboot version 1.4.2.RELEASE

Upvotes: 0

Views: 3431

Answers (2)

Amro Nahas
Amro Nahas

Reputation: 54

try to use this Configuration to define a data source

 @Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
        entityManagerFactoryRef = "eaEntityManagerFactory",
        transactionManagerRef = "eaTransactionManager",
        basePackages = {"com.core.persistance.xx" 
            
                 })
public class EaDbConfig {

    @Bean(name = "eaDataSourceProperties")
    @ConfigurationProperties("spring.datasource-ea")
    public DataSourceProperties eaDataSourceProperties() {
        return new DataSourceProperties();
    }

    @Bean(name = "eaDataSource")
    @ConfigurationProperties("spring.datasource-ea.configuration")
    public DataSource eaDataSource(@Qualifier("eaDataSourceProperties") DataSourceProperties eaDataSourceProperties) {
        return eaDataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
    }

    @Bean(name = "eaEntityManagerFactory")
    public LocalContainerEntityManagerFactoryBean eaEntityManagerFactory(
            EntityManagerFactoryBuilder eaEntityManagerFactoryBuilder, @Qualifier("eaDataSource") DataSource eaDataSource) {

        Map<String, String> eaJpaProperties = new HashMap<>();
    /*    eaJpaProperties.put("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
        eaJpaProperties.put("hibernate.hbm2ddl.auto", "create-drop");*/

        return eaEntityManagerFactoryBuilder
                .dataSource(eaDataSource)
                .packages("com.core.persistance.xx.domain"
                         
                         )
                .persistenceUnit("eaDataSource")
                .properties(eaJpaProperties)
                .build();
    }

    @Bean(name = "eaTransactionManager")
    public PlatformTransactionManager eaTransactionManager(
            @Qualifier("eaEntityManagerFactory") EntityManagerFactory eaEntityManagerFactory) {

        return new JpaTransactionManager(eaEntityManagerFactory);
    }
}

---------------
config properties :
#  source configuration

 - spring.datasource-ea.url=url
 - spring.datasource-ea.username=username
 - spring.datasource-ea.password=password
 - spring.datasource-ea.driverClassName=oracle.jdbc.OracleDriver

Upvotes: 0

Holinc
Holinc

Reputation: 743

Try to add @bean into your configuration class.

@Bean(name = "hikariDataSource")
@Qualifier("hikariDataSource")
@ConfigurationProperties(prefix = "spring.datasource.hikari")
public DataSource hikariDataSource() {
    log.info("Building hikariDataSource......");
    return DataSourceBuilder.create().type(com.zaxxer.hikari.HikariDataSource.class).build();
}

And configuring your properties file.

spring.datasource.hikari.jdbc-url=jdbc:mysql://127.0.0.1:3306/test
spring.datasource.hikari.username=root
spring.datasource.hikari.password=root
spring.datasource.hikari.driver-class-name=com.mysql.jdbc.Driver

Upvotes: 1

Related Questions