001 package railo.runtime.orm.hibernate; 002 003 import org.hibernate.Session; 004 import org.hibernate.Transaction; 005 006 import railo.runtime.orm.ORMTransaction; 007 008 public class HibernateORMTransaction implements ORMTransaction { 009 010 private Transaction trans; 011 private Session session; 012 private boolean doRollback; 013 private boolean autoManage; 014 015 public HibernateORMTransaction(Session session, boolean autoManage){ 016 this.session=session; 017 this.autoManage=autoManage; 018 } 019 020 @Override 021 public void begin() { 022 if(autoManage)session.flush(); 023 trans=session.beginTransaction(); 024 025 } 026 027 @Override 028 public void commit() { 029 // do nothing 030 } 031 032 @Override 033 public void rollback() { 034 doRollback=true; 035 } 036 037 @Override 038 public void end() { 039 if(doRollback){ 040 trans.rollback(); 041 if(autoManage)session.clear(); 042 } 043 else{ 044 trans.commit(); 045 session.flush(); 046 } 047 } 048 }