
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 extends T> clazz, final HasId obj) {
return load(clazz, obj.getId());
}
@Override
@SuppressWarnings("unchecked")
public T load(
final Class extends T> 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