All Downloads are FREE. Search and download functionalities are using the official Maven repository.

se.wfh.libs.common.web.ejb.HibernateEJB Maven / Gradle / Ivy

package se.wfh.libs.common.web.ejb;

import java.util.Collection;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Singleton;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;

import se.wfh.libs.common.web.ejb.interfaces.HibernateBean;
import se.wfh.libs.common.web.entities.AbstractDatabaseObject;
import se.wfh.libs.common.web.entities.HasId;
import se.wfh.libs.common.web.util.HibernateUtil;

@EJB(name = "HibernateEJB", beanInterface = HibernateBean.class)
@Singleton
public class HibernateEJB implements HibernateBean {
	private static final long serialVersionUID = 1L;

	@Override
	public  void delete(final T obj) {
		getSession().delete(obj);
	}

	@Override
	public Session getSession() {
		return HibernateUtil.getSession();
	}

	@Override
	public Transaction getTransaction() {
		return getSession().getTransaction();
	}

	@Override
	public  boolean isKeyUnique(
			final Class clazz, final String field, final Object value,
			final Object ignoreValue) {
		final Criteria crit = getSession().createCriteria(clazz);
		crit.add(Restrictions.eq(field, value));
		if (ignoreValue != null) {
			crit.add(Restrictions.ne(field, ignoreValue));
		}

		return crit.uniqueResult() == null;
	}

	@Override
	@SuppressWarnings("unchecked")
	public  List list(final Class clazz,
			final String field, final Object filter) {
		final Criteria crit = getSession().createCriteria(clazz);
		if (field != null && filter != null) {
			if (filter instanceof Collection) {
				crit.add(Restrictions.in(field, (Collection) filter));
			} else {
				crit.add(Restrictions.eq(field, filter));
			}
		}

		return crit.list();
	}

	@Override
	public  T load(
			final Class clazz, final HasId obj) {
		return load(clazz, obj.getId());
	}

	@Override
	@SuppressWarnings("unchecked")
	public  T load(
			final Class clazz, final Integer idVal) {
		return (T) getSession().byId(clazz).load(idVal);
	}

	@Override
	@SuppressWarnings("unchecked")
	public  T load(final Class clazz,
			final String field, final Object value) {
		final Criteria crit = getSession().createCriteria(clazz);
		crit.add(Restrictions.eq(field, value));

		return (T) crit.uniqueResult();
	}

	@Override
	public  void save(final T obj) {
		getSession().saveOrUpdate(obj);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy