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 /** 021 * @see railo.runtime.orm.ORMTransaction#begin() 022 */ 023 public void begin() { 024 if(autoManage)session.flush(); 025 trans=session.beginTransaction(); 026 027 } 028 029 /** 030 * @see railo.runtime.orm.ORMTransaction#commit() 031 */ 032 public void commit() { 033 // do nothing 034 } 035 036 /** 037 * @see railo.runtime.orm.ORMTransaction#rollback() 038 */ 039 public void rollback() { 040 doRollback=true; 041 } 042 043 /** 044 * @see railo.runtime.orm.ORMTransaction#end() 045 */ 046 public void end() { 047 if(doRollback){ 048 trans.rollback(); 049 if(autoManage)session.clear(); 050 } 051 else{ 052 trans.commit(); 053 session.flush(); 054 } 055 } 056 }