Home / Programmazione / Java / Hibernate SessionFactory e Service Registry
Mattepuffo

Hibernate SessionFactory e Service Registry

Hibernate SessionFactory e Service Registry

Quando usiamo Hibernate nelle nostre applicazioni Java, siamo abituati a creare una SessionFactory in questo modo:

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();

Solo che dalla versione 4 di Hibernate, il metodo buildSessionFactory() risulta deprecato in favore di buildSessionFactory(ServiceRegistry).

In sostanza la nostra classe HibernateUtil diventa una cosa del genere:

import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
 
public class HibernateUtil {
    private static SessionFactory sessionFactory;
      
    public static SessionFactory getSessionFactory() {
        if (sessionFactory == null) {
            Configuration configuration = new Configuration().configure();
            ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
            sessionFactory = configuration.buildSessionFactory(serviceRegistry);            
        }
          
        return sessionFactory;
    }
}

Per usare questo classe in un progetto Hibernate:

SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save(myObject);

Enjoy!