package at.intelligentminds.service.model;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
public class HibernateSupport {
private static final SessionFactory sessionFactory;
private static final ServiceRegistry serviceRegistry;
static {
try {
// Create the SessionFactory from hibernate.cfg.xml
Configuration configuration = new Configuration().configure();
configuration.addAnnotatedClass(User.class);
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder();
builder.applySettings(configuration.getProperties());
serviceRegistry = builder.build();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
sessionFactory.openSession();
} catch (Throwable ex) {
// Make sure you log the exception, as it might be swallowed
System.err.println("Initial SessionFactory creation failed! " + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static Session getSession() {
return sessionFactory.getCurrentSession();
}
public static boolean persist(Object obj) {
try {
getSession().saveOrUpdate(obj);
} catch (HibernateException e) {
System.out.println("Committing error: " + e);
return false;
}
return true;
}
public static boolean persistMultiple(List<Object> objects) {
try {
for (Object currentEntity : objects) {
if(currentEntity == null) {
continue;
}
getSession().saveOrUpdate(currentEntity);
}
} catch (HibernateException e) {
System.out.println("Committing error: " + e);
return false;
}
return true;
}
public static void destroy() {
StandardServiceRegistryBuilder.destroy(serviceRegistry);
}
}