diff --git a/src/main/java/com/soap/util/HibernateUtil.java b/src/main/java/com/soap/util/HibernateUtil.java
new file mode 100644
index 0000000000000000000000000000000000000000..624c3374aed026a7867ff977af8a99cb16a7b6b9
--- /dev/null
+++ b/src/main/java/com/soap/util/HibernateUtil.java
@@ -0,0 +1,68 @@
+package com.soap.util;
+
+import java.io.File;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.hibernate.SessionFactory;
+import org.hibernate.cfg.Configuration;
+import org.w3c.dom.Document;
+
+import io.github.cdimascio.dotenv.Dotenv;
+
+public class HibernateUtil {
+    private static final String CONFIG_FILE_TEMPLATE = "/hibernate.cfg.template.xml";
+    private static final String CONFIG_FILE = "/hibernate.cfg.xml";
+    private static SessionFactory sessionFactory = buildSessionFactory();
+
+    private static SessionFactory buildSessionFactory() {
+        try {
+            Configuration conf = new Configuration().configure(makeConfigFile());
+            return conf.buildSessionFactory();
+        } catch (Exception e) {
+            throw new ExceptionInInitializerError(e);
+        }
+    }
+
+    private static String makeConfigFile() {
+        try {        
+            File file = new File(CONFIG_FILE);    
+            if (file.exists()) return CONFIG_FILE;
+            
+            // Load .env
+            Dotenv dotenv = Dotenv.load();
+
+            // Load XML file
+            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+            DocumentBuilder builder = factory.newDocumentBuilder();
+            Document doc = builder.parse(CONFIG_FILE_TEMPLATE);
+            
+            // Set the variables
+            doc.getElementsByTagName("property").item(0).setTextContent(dotenv.get("DB_HOST"));
+            doc.getElementsByTagName("property").item(1).setTextContent(
+                "jdbc:mysql://localhost:3306/" + dotenv.get("DB_NAME")
+            );
+            doc.getElementsByTagName("property").item(2).setTextContent(dotenv.get("DB_USER"));
+            doc.getElementsByTagName("property").item(3).setTextContent(dotenv.get("DB_PASS"));            
+
+            // Save the file
+            TransformerFactory transformerFactory = TransformerFactory.newInstance();
+            Transformer transformer = transformerFactory.newTransformer();
+            transformer.transform(new DOMSource(doc), new StreamResult(CONFIG_FILE));
+    
+            return CONFIG_FILE;
+        } catch (Exception e) {
+            throw new ExceptionInInitializerError(e);
+        }
+    }
+
+    public static SessionFactory getSessionFactory() {
+        return sessionFactory;
+    }
+    
+}
diff --git a/src/main/java/com/soap/util/hibernate.cfg.template.xml b/src/main/java/com/soap/util/hibernate.cfg.template.xml
new file mode 100644
index 0000000000000000000000000000000000000000..07b3a3a32805c0e84871ace7e44c5874e55316ca
--- /dev/null
+++ b/src/main/java/com/soap/util/hibernate.cfg.template.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
+<hibernate-configuration>
+    <session-factory>
+        <!-- Database connection settings -->
+        <property name="hibernate.connection.driver_class"></property>
+        <property name="hibernate.connection.url"></property>
+        <property name="hibernate.connection.username"></property>
+        <property name="hibernate.connection.password"></property>
+
+        <!-- Dialect for your database -->
+        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
+
+        <!-- Enable Hibernate's automatic session context management -->
+        <property name="hibernate.current_session_context_class">thread</property>
+
+        <!-- Echo all executed SQL to stdout -->
+        <property name="hibernate.show_sql">true</property>
+
+        <!-- Mapping file or annotated class -->
+        <!-- Add your entity classes or mapping files here -->
+
+    </session-factory>
+</hibernate-configuration>