package io.robe.hibernate; /** * Created by kamilbukum on 20/11/16. */ import org.hibernate.SessionFactory; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import org.reflections.Reflections; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; public class HibernateUtil { private static Map<String, SessionFactory> factoryMap = new LinkedHashMap<>(); public static SessionFactory buildSessionFactory(Class<?> testClass){ Configuration configuration = new Configuration(); configuration.setProperty("connection.driver_class","org.h2.Driver"); configuration.setProperty("hibernate.connection.url", "jdbc:h2:mem:" + testClass.getSimpleName()); configuration.setProperty("hibernate.connection.username", "sa"); configuration.setProperty("hibernate.connection.password", ""); configuration.setProperty("dialect", "org.hibernate.dialect.H2Dialect"); configuration.setProperty("hibernate.hbm2ddl.auto", "update"); configuration.setProperty("show_sql", "true"); configuration.setProperty(" hibernate.connection.pool_size", "10"); Reflections reflections = new Reflections("io.robe.hibernate.test.entity"); Set<Class<?>> classes = reflections.getTypesAnnotatedWith(javax.persistence.Entity.class); for(Class<?> clazz : classes) { configuration.addAnnotatedClass(clazz); } ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); return configuration.buildSessionFactory(serviceRegistry); } public static SessionFactory getSessionFactory(Class<?> testClass) { SessionFactory sessionFactory = factoryMap.computeIfAbsent(testClass.getSimpleName(), k -> buildSessionFactory(testClass)); return sessionFactory; } }