package org.celllife.idart.database.hibernate.util; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction; public abstract class TransactionalCommand { private final Session session; public TransactionalCommand(Session session) { this.session = session; } public void run(){ Transaction tx = null; try { tx = session.beginTransaction(); executeInTransaction(); session.flush(); tx.commit(); } catch (HibernateException e) { if (tx != null) tx.rollback(); } } public Session getSession() { return session; } protected abstract void executeInTransaction(); }