<commit_before>package org.alex.accesodatos.util;

import org.alex.libs.Util;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.exception.ConstraintViolationException;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

/**
 * Clase que facilita el trabajo con Hibernate
 * 
 * @author <NAME>
 * @version 1.0
 * 
 */
public class HibernateUtil {

	private static SessionFactory sessionFactory;
	private static Session session;

	/**
	 * Crea la factoria de sesiones
	 */
	public static void buildSessionFactory() {

		Configuration configuration = new Configuration();
		configuration.configure();
		ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
				.applySettings(configuration.getProperties())
				.buildServiceRegistry();
		sessionFactory = configuration.buildSessionFactory(serviceRegistry);
	}

	/**
	 * Abre una nueva sesin
	 */
	public static void openSession() {
		session = sessionFactory.openSession();
	}

	/**
	 * Devuelve la sesin actual
	 * 
	 * @return
	 */
	public static Session getCurrentSession() {

		if (!session.isOpen())
			openSession();

		return session;
	}

	/**
	 * Crea y devuelve una query con la consulta pasada por parametro.
	 * 
	 * @param consulta
	 * @return Query
	 */
	public static Query getQuery(String consulta) {
		return getCurrentSession().createQuery(consulta);
	}

	/**
	 * guardar, actualizar, borrar.
	 * 
	 * @param opcion
	 * @param obj
	 * @param mensaje
	 */
	public static void setData(String opcion, Object obj, String mensaje) {
		Session sesion = beginTransaction();
		switch (opcion) {
		case "guardar":
			sesion.save(obj);
			break;
		case "actualizar":
			sesion.update(obj);
			break;
		case "borrar":
			sesion.delete(obj);
			break;
		default:
		}
		closeTransaction(sesion, mensaje);
	}

	/**
	 * Empieza una transaccion.
	 * 
	 * @return sesion
	 */
	public static Session beginTransaction() {
		Session sesion = getCurrentSession();
		sesion.beginTransaction();
		return sesion;
	}

	/**
	 * Cierra una transaccion.
	 * 
	 * @param sesion
	 * @param mensaje
	 */
	public static void closeTransaction(Session sesion, String mensaje) {
		try {
			sesion.getTransaction().commit();
		} catch (ConstraintViolationException cve) {
			Util.setMensajeError(mensaje);
		}
		sesion.close();
	}
}<commit_msg>commit<commit_after>package org.alex.accesodatos.util;

import org.alex.libs.Util;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.exception.ConstraintViolationException;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

/**
 * Clase que facilita el trabajo con Hibernate
 * 
 * @author <NAME>
 * @version 1.0
 * 
 */
public class HibernateUtil {

	private static SessionFactory sessionFactory;
	private static Session session;

	/**
	 * Crea la factoria de sesiones
	 */
	public static void buildSessionFactory() {

		Configuration configuration = new Configuration();
		configuration.configure();
		ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
				.applySettings(configuration.getProperties())
				.buildServiceRegistry();
		sessionFactory = configuration.buildSessionFactory(serviceRegistry);
	}

	/**
	 * Abre una nueva sesin
	 */
	public static void openSession() {
		session = sessionFactory.openSession();
	}

	/**
	 * Devuelve la sesin actual
	 * 
	 * @return
	 */
	public static Session getCurrentSession() {

		if (!session.isOpen())
			openSession();

		return session;
	}

	/**
	 * Crea y devuelve una query con la consulta pasada por parametro.
	 * 
	 * @param consulta
	 * @return Query
	 */
	public static Query getQuery(String consulta) {
		return getCurrentSession().createQuery(consulta);
	}

	/**
	 * guardar, actualizar, borrar.
	 * 
	 * @param opcion
	 * @param obj
	 * @param mensaje
	 */
	public static void setData(String opcion, Object obj, String mensaje) {
		// Empieza una transaccion.
		Session sesion = getCurrentSession();
		sesion.beginTransaction();
		switch (opcion) {
		case "guardar":
			sesion.save(obj);
			break;
		case "actualizar":
			sesion.update(obj);
			break;
		case "borrar":
			sesion.delete(obj);
			break;
		default:
		}
		// Cerrar transaccion.
		try {
			sesion.getTransaction().commit();
		} catch (ConstraintViolationException cve) {
			Util.setMensajeError(mensaje);
		}
		sesion.close();
	}

}
{'fraction_non_alphanumeric': 0.11140350877192982, 'fraction_numerical': 0.0008771929824561404, 'mean_word_length': 3.9095801937567276, 'pattern_counts': {'":': 6, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2558254', 'n_tokens_mistral': 1568, 'n_tokens_neox': 1348, 'n_words': 339}