
driven-adapter.jpa-repository.config.jpa-config.mustache Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of scaffold-clean-architecture Show documentation
Show all versions of scaffold-clean-architecture Show documentation
Gradle plugin to create a clean application in Java that already works, It follows our best practices!
package {{package}}.jpa.config;
{{#include-secret}}
import co.com.bancolombia.secretsmanager.api.GenericManager;
import co.com.bancolombia.secretsmanager.api.exceptions.SecretException;
{{/include-secret}}
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
{{^include-secret}}
import org.springframework.core.env.Environment;
{{/include-secret}}
import org.springframework.orm.jpa.JpaVendorAdapter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
import javax.sql.DataSource;
import java.util.Properties;
@Configuration
public class JpaConfig {
{{#include-secret}}
@Bean
public DBSecret dbSecret(@Value("${aws.secretName}") String secret, GenericManager manager)
throws SecretException {
return manager.getSecret(secret, DBSecret.class);
}
{{/include-secret}}
{{^include-secret}}
@Bean
public DBSecret dbSecret(Environment env) {
return DBSecret.builder()
.url(env.getProperty("spring.datasource.url"))
.username(env.getProperty("spring.datasource.username"))
.password(env.getProperty("spring.datasource.password"))
.build();
}
{{/include-secret}}
@Bean
public DataSource datasource(DBSecret secret, @Value("${spring.datasource.driverClassName}") String driverClass) {
HikariConfig config = new HikariConfig();
config.setJdbcUrl(secret.getUrl());
config.setUsername(secret.getUsername());
config.setPassword(secret.getPassword());
config.setDriverClassName(driverClass);
return new HikariDataSource(config);
}
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory(
DataSource dataSource,
@Value("${spring.jpa.databasePlatform}") String dialect) {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource);
em.setPackagesToScan("{{package}}.jpa");
JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
Properties properties = new Properties();
properties.setProperty("hibernate.dialect", dialect);
properties.setProperty("hibernate.hbm2ddl.auto", "update"); // TODO: remove this for non auto create schema
em.setJpaProperties(properties);
return em;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy