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

jpaoletti.jpm.hibernate.core.PersistenceManager Maven / Gradle / Ivy

The newest version!
package jpaoletti.jpm.hibernate.core;

import jpaoletti.jpm.core.PMContext;
import jpaoletti.jpm.core.PMException;
import jpaoletti.jpm.core.PresentationManager;
import jpaoletti.jpm.core.message.MessageFactory;
import jpaoletti.jpm.hibernate.HibernateUtil;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.exception.ConstraintViolationException;

public class PersistenceManager implements jpaoletti.jpm.core.PersistenceManager {

    private Session session;

    @Override
    public void commit(PMContext ctx, Object transaction) throws Exception {
        try {
            ((Transaction) transaction).commit();
        } catch (ConstraintViolationException e) {
            throw new PMException(MessageFactory.error("constraint.violation.exception", ctx.getEntity().getTitle(), ctx.getOperation().getTitle()));
        }
    }

    @Override
    public void finish(PMContext ctx) {
        try {
            getConnection().close();
        } catch (Exception e) {
        }
    }

    @Override
    public void init(Session o) throws Exception {
        try {
            this.session = o;
        } catch (Exception e) {
            PresentationManager.getPm().error(e);
            throw new PMException(e);
        }
    }

    @Override
    public void rollback(PMContext ctx, Object transaction) throws Exception {
        ((Transaction) transaction).rollback();
        getConnection().close();
        init(getConnection());
        //TODO Need some checks
    }

    @Override
    public Object startTransaction(PMContext ctx) throws Exception {
        return getConnection().beginTransaction();
    }

    @Override
    public Session getConnection() {
        return session;
    }

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




© 2015 - 2025 Weber Informatics LLC | Privacy Policy