💾 Setup SQLite database #3

Merged
torge-hmn merged 4 commits from feat/db-setup into main 2024-11-17 18:09:28 +00:00
5 changed files with 69 additions and 8 deletions
Showing only changes of commit 29eb3b2a47 - Show all commits

View file

@ -41,6 +41,7 @@ dependencies {
testImplementation("org.springframework.boot:spring-boot-starter-test") testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("org.springframework.security:spring-security-test") testImplementation("org.springframework.security:spring-security-test")
testImplementation("org.assertj:assertj-core")
testRuntimeOnly("org.junit.platform:junit-platform-launcher") testRuntimeOnly("org.junit.platform:junit-platform-launcher")
} }

View file

@ -16,10 +16,14 @@ import java.util.Properties;
@Configuration @Configuration
@RequiredArgsConstructor @RequiredArgsConstructor
//@EnableJpaRepositories(basePackages = "de.mlessmann.certassist.repositories") @EnableJpaRepositories(basePackages = "de.mlessmann.certassist.repositories")
@PropertySource("classpath:persistence.properties") @PropertySource("classpath:persistence.properties")
public class DatabaseConfig { 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; final Environment env;
@Bean @Bean
@ -36,7 +40,7 @@ public class DatabaseConfig {
public LocalContainerEntityManagerFactoryBean entityManagerFactory() { public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
final LocalContainerEntityManagerFactoryBean entityManagerFactory = new LocalContainerEntityManagerFactoryBean(); final LocalContainerEntityManagerFactoryBean entityManagerFactory = new LocalContainerEntityManagerFactoryBean();
entityManagerFactory.setDataSource(dataSource()); entityManagerFactory.setDataSource(dataSource());
//entityManagerFactory.setPackagesToScan("de.mlessmann.certassist.models"); entityManagerFactory.setPackagesToScan("de.mlessmann.certassist.models");
entityManagerFactory.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); entityManagerFactory.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
entityManagerFactory.setJpaProperties(additionalProperties()); entityManagerFactory.setJpaProperties(additionalProperties());
return entityManagerFactory; return entityManagerFactory;
@ -44,15 +48,16 @@ public class DatabaseConfig {
final Properties additionalProperties() { final Properties additionalProperties() {
final Properties hibernateProperties = new Properties(); final Properties hibernateProperties = new Properties();
if (env.getProperty("hibernate.hbm2ddl.auto") != null) { if (env.getProperty(HIBERNATE_HBM_2_DDL_AUTO_PROPERTY) != null) {
hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); hibernateProperties.setProperty(HIBERNATE_HBM_2_DDL_AUTO_PROPERTY, env.getProperty(HIBERNATE_HBM_2_DDL_AUTO_PROPERTY));
} }
if (env.getProperty("hibernate.dialect") != null) { if (env.getProperty(HIBERNATE_DIALECT_PROPERTY) != null) {
hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); hibernateProperties.setProperty(HIBERNATE_DIALECT_PROPERTY, env.getProperty(HIBERNATE_DIALECT_PROPERTY));
} }
if (env.getProperty("hibernate.show_sql") != null) { if (env.getProperty(HIBERNATE_SHOW_SQL_PROPERTY) != null) {
hibernateProperties.setProperty("hibernate.show_sql", env.getProperty("hibernate.show_sql")); hibernateProperties.setProperty(HIBERNATE_SHOW_SQL_PROPERTY, env.getProperty(HIBERNATE_SHOW_SQL_PROPERTY));
} }
return hibernateProperties; return hibernateProperties;
} }

View file

@ -0,0 +1,20 @@
package de.mlessmann.certassist.models;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.Setter;
@Entity
@Getter
public class User {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@Setter
private String username;
}

View file

@ -0,0 +1,11 @@
package de.mlessmann.certassist.repositories;
import de.mlessmann.certassist.models.User;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserRepository extends CrudRepository<User, Long> {
User findUserById(long id);
}

View file

@ -0,0 +1,24 @@
package de.mlessmann.certassist.repositories;
import de.mlessmann.certassist.models.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import static org.assertj.core.api.Assertions.assertThat;
@SpringBootTest
class UserRepositoryTest {
@Autowired
private UserRepository userRepository;
@Test
void findUserById() {
final User user = new User();
user.setUsername("test");
userRepository.save(user);
assertThat(userRepository.findUserById(user.getId()).getUsername()).isEqualTo("test");
}
}