View Javadoc

1   /*
2    * HibernateCacheEntity.java
3    * Created on 16 Декабрь 2005 г., 14:05
4    */
5   
6   package org.weda.hibernate;
7   
8   import java.sql.Savepoint;
9   import java.util.Stack;
10  import org.apache.commons.logging.Log;
11  import org.apache.commons.logging.LogFactory;
12  import org.hibernate.HibernateException;
13  import org.hibernate.Session;
14  import org.hibernate.Transaction;
15  import org.weda.cache.CacheEntity;
16  
17  /**
18   *
19   * @author tim
20   */
21  public class HibernateCacheEntity implements CacheEntity {
22      private final static Log log = LogFactory.getLog(HibernateCacheEntity.class);
23      private Session session = null;
24      private int callCounter = 0;
25      private boolean endTransactionError = false;
26      private Stack<Savepoint> savepoints = new Stack<Savepoint>();
27      private boolean supportsSavepoint;
28      private boolean supportsReleaseSavepoint;
29          
30      public void release() {
31          if (log.isDebugEnabled())
32              log.debug("Releasing hibernate session cache entity");
33          try{            
34              if (session!=null){
35                  if (log.isDebugEnabled())
36                      log.debug(
37                              "Cache entity has active session. " +
38                              "Closing hibernate session");
39                  Transaction tx = session.getTransaction();
40                  if (tx!=null && tx.isActive()){
41                      if (log.isDebugEnabled())
42                          log.debug(
43                                  "Cache entity has active transaction. " +
44                                  "Rolling back transaction");
45                      tx.rollback();                    
46                  }
47                  session.close();
48              }
49          }catch(HibernateException e){
50              log.error(
51                      "Error while releasing hibernate session cache entity", e);
52          }
53      }
54  
55      public Object getValue() {
56          return session;
57      }
58      
59      public void setSession(Session session) {
60          this.session = session;
61      }
62  
63      public Session getSession() {
64          return session;
65      }
66  
67      public int getCallCounter() {
68          return callCounter;
69      }
70  
71      public void setCallCounter(int callCounter) {
72          this.callCounter = callCounter;
73      }
74  
75      public boolean isEndTransactionError() {
76          return endTransactionError;
77      }
78  
79      public void setEndTransactionError(boolean endTransactionError) {
80          this.endTransactionError = endTransactionError;
81      }
82  
83      public Stack<Savepoint> getSavepoints() {
84          return savepoints;
85      }
86  
87      public void setSavepoints(Stack<Savepoint> savepoints) {
88          this.savepoints = savepoints;
89      }
90  
91      public boolean isSupportsSavepoint() {
92          return supportsSavepoint;
93      }
94  
95      public void setSupportsSavepoint(boolean supportsSavepoint) {
96          this.supportsSavepoint = supportsSavepoint;
97      }
98  
99      public boolean isSupportsReleaseSavepoint() {
100         return supportsReleaseSavepoint;
101     }
102 
103     public void setSupportsReleaseSavepoint(boolean supportsReleaseSavepoint) {
104         this.supportsReleaseSavepoint = supportsReleaseSavepoint;
105     }
106 
107 }