package com.github.signed.sandbox.jpa.h2;
import java.util.Properties;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class DatabaseConnector {
private final String userName = "sa";
private final String password = "sa";
private final H2JdbcUrlBuilder jdbcUrlBuilder;
private final Properties overridePropertiesFromPersistenceXml = new Properties();
private EntityManagerFactory entityManagerFactory;
private String persistenceUnitName;
public DatabaseConnector(H2JdbcUrlBuilder jdbcUrlBuilder, String persistenceUnitName) {
this.jdbcUrlBuilder = jdbcUrlBuilder;
this.persistenceUnitName = persistenceUnitName;
}
public DatabaseConnector verboseLogging() {
overridePropertiesFromPersistenceXml.setProperty("hibernate.show_sql", "true");
overridePropertiesFromPersistenceXml.setProperty("hibernate.format_sql", "true");
overridePropertiesFromPersistenceXml.setProperty("hibernate.use_sql_comments", "true");
return this;
}
public DatabaseConnector create_drop(){
overridePropertiesFromPersistenceXml.setProperty("hibernate.hbm2ddl.auto", "create-drop");
return this;
}
public void createEntityManagerFactory() {
overridePropertiesFromPersistenceXml.setProperty("javax.persistence.jdbc.driver", "org.h2.Driver");
overridePropertiesFromPersistenceXml.setProperty("javax.persistence.jdbc.url", jdbcUrlBuilder.buildUrl());
overridePropertiesFromPersistenceXml.setProperty("javax.persistence.jdbc.user", userName);
overridePropertiesFromPersistenceXml.setProperty("javax.persistence.jdbc.password", password);
overridePropertiesFromPersistenceXml.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect");
entityManagerFactory = Persistence.createEntityManagerFactory(persistenceUnitName, overridePropertiesFromPersistenceXml);
}
public EntityManager entityManagerForLocalHsqlDatabase() {
return entityManagerFactory.createEntityManager();
}
public void close() {
entityManagerFactory.close();
}
}