Skip to content
Snippets Groups Projects
Commit b605ffc4 authored by Fakhri Mahendra's avatar Fakhri Mahendra
Browse files

feat: Hibernate Bootstraping

parent f2f7a0ca
Branches
Tags
No related merge requests found
package edujin.util;
import io.github.cdimascio.dotenv.Dotenv;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import java.util.Properties;
public class HibernateUtil {
private static final String DB_HOST = Dotenv.load().get("MYSQL_HOST");
private static final String DB_PORT = Dotenv.load().get("MYSQL_PORT");
private static final String DB_NAME = Dotenv.load().get("MYSQL_DATABASE");
private static final String DB_USER = Dotenv.load().get("MYSQL_USER");
private static final String DB_PASS = Dotenv.load().get("MYSQL_PASSWORD");
private static final String DB_URL = String.format("jdbc:mysql://%s:%s/%s", DB_HOST, 3307, DB_NAME);
private static SessionFactory sessionFactory;
private static Configuration getConfiguration() {
Properties properties = new Properties();
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQL8Dialect");
properties.setProperty("hibernate.connection.driver_class", "com.mysql.jdbc.Driver");
properties.setProperty("hibernate.connection.url", HibernateUtil.DB_URL);
properties.setProperty("hibernate.connection.username", HibernateUtil.DB_USER);
properties.setProperty("hibernate.connection.password", HibernateUtil.DB_PASS);
properties.setProperty("hibernate.hbm2ddl.auto", "update");
properties.setProperty("hibernate.use_second_level_cache", "false");
properties.put("hibernate.current_session_context_class", "thread");
Configuration configuration = new Configuration();
configuration.addAnnotatedClass(edujin.model.Subscription.class);
configuration.addAnnotatedClass(edujin.model.PasswordResetToken.class);
configuration.setProperties(properties);
return configuration;
}
private static SessionFactory buildSessionFactory() {
Configuration configuration = getConfiguration();
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties())
.build();
try {
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
}
catch (Exception e) {
// The registry would be destroyed by the SessionFactory, but we had trouble building the SessionFactory
// so destroy it manually.
StandardServiceRegistryBuilder.destroy(serviceRegistry);
throw e;
}
return sessionFactory;
}
public static SessionFactory getSessionFactory() {
if (HibernateUtil.sessionFactory == null) {
HibernateUtil.sessionFactory = HibernateUtil.buildSessionFactory();
}
return HibernateUtil.sessionFactory;
}
public static void flushAndClear() {
HibernateUtil.getSessionFactory().getCurrentSession().flush();
HibernateUtil.getSessionFactory().getCurrentSession().clear();
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment