home-cert-assistant/src/main/java/de/mlessmann/certassist/config/DatabaseConfig.java
Torge Hamann e75ac48743
💾 Setup SQLite database (#3)
* Add SQLite setup

* Add basic user entity and repository

* Adjust DB naming

* Consolidate properties
2024-11-17 19:09:28 +01:00

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;
}
}