
* Add SQLite setup * Add basic user entity and repository * Adjust DB naming * Consolidate properties
62 lines
2.8 KiB
Java
62 lines
2.8 KiB
Java
package de.mlessmann.certassist.config;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.core.env.Environment;
|
|
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
|
|
import org.springframework.jdbc.datasource.DriverManagerDataSource;
|
|
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
|
|
import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
|
|
|
|
import javax.sql.DataSource;
|
|
import java.util.Objects;
|
|
import java.util.Properties;
|
|
|
|
@Configuration
|
|
@RequiredArgsConstructor
|
|
@EnableJpaRepositories(basePackages = "de.mlessmann.certassist.repositories")
|
|
public class DatabaseConfig {
|
|
|
|
private static final String HIBERNATE_DIALECT_PROPERTY = "hibernate.dialect";
|
|
private static final String HIBERNATE_HBM_2_DDL_AUTO_PROPERTY = "hibernate.hbm2ddl.auto";
|
|
private static final String HIBERNATE_SHOW_SQL_PROPERTY = "hibernate.show_sql";
|
|
|
|
final Environment env;
|
|
|
|
@Bean
|
|
public DataSource dataSource() {
|
|
final DriverManagerDataSource dataSource = new DriverManagerDataSource();
|
|
dataSource.setDriverClassName(Objects.requireNonNull(env.getProperty("driverClassName")));
|
|
dataSource.setUrl(Objects.requireNonNull(env.getProperty("url")));
|
|
dataSource.setUsername(Objects.requireNonNull(env.getProperty("username")));
|
|
dataSource.setPassword(Objects.requireNonNull(env.getProperty("password")));
|
|
return dataSource;
|
|
}
|
|
|
|
@Bean
|
|
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
|
|
final LocalContainerEntityManagerFactoryBean entityManagerFactory = new LocalContainerEntityManagerFactoryBean();
|
|
entityManagerFactory.setDataSource(dataSource());
|
|
entityManagerFactory.setPackagesToScan("de.mlessmann.certassist.models");
|
|
entityManagerFactory.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
|
|
entityManagerFactory.setJpaProperties(additionalProperties());
|
|
return entityManagerFactory;
|
|
}
|
|
|
|
private Properties additionalProperties() {
|
|
final Properties hibernateProperties = new Properties();
|
|
if (env.getProperty(HIBERNATE_HBM_2_DDL_AUTO_PROPERTY) != null) {
|
|
hibernateProperties.setProperty(HIBERNATE_HBM_2_DDL_AUTO_PROPERTY, env.getProperty(HIBERNATE_HBM_2_DDL_AUTO_PROPERTY));
|
|
}
|
|
if (env.getProperty(HIBERNATE_DIALECT_PROPERTY) != null) {
|
|
hibernateProperties.setProperty(HIBERNATE_DIALECT_PROPERTY, env.getProperty(HIBERNATE_DIALECT_PROPERTY));
|
|
}
|
|
if (env.getProperty(HIBERNATE_SHOW_SQL_PROPERTY) != null) {
|
|
hibernateProperties.setProperty(HIBERNATE_SHOW_SQL_PROPERTY, env.getProperty(HIBERNATE_SHOW_SQL_PROPERTY));
|
|
}
|
|
|
|
return hibernateProperties;
|
|
}
|
|
|
|
}
|