1 5 package com.tctest.spring.bean; 6 7 import org.springframework.transaction.TransactionStatus; 8 import org.springframework.transaction.support.DefaultTransactionDefinition; 9 10 import com.tctest.spring.bean.domain.PersistentObj; 11 import com.tctest.spring.bean.orm.hibernate.HibernateDAO; 12 13 public class HibernateBean implements IHibernateBean { 14 private Object sharedOne = null; 15 private transient HibernateDAO dao = null; 16 17 public void associateSharedObj() { 18 dao.getHibernateTemplate().update(this.getSharedOne()); 19 } 20 21 public void sharePersistentObj() { 22 TransactionStatus status = dao.getTransactionManager().getTransaction(new DefaultTransactionDefinition()); 23 PersistentObj po = new PersistentObj(); 24 po.setStrFld("persistent"); 25 dao.getHibernateTemplate().save(po); 26 this.setSharedOne(po); dao.getTransactionManager().commit(status); 28 } 29 30 public void shareDetachedObj() { 31 TransactionStatus status = dao.getTransactionManager().getTransaction(new DefaultTransactionDefinition()); 32 PersistentObj po = new PersistentObj(); 33 po.setStrFld("detached"); 34 dao.getHibernateTemplate().save(po); 35 dao.getTransactionManager().commit(status); 36 this.setSharedOne(po); } 38 39 public void shareLazyObj() { 40 Integer id = null; 41 PersistentObj po = new PersistentObj(); 42 po.setStrFld("parent"); 43 PersistentObj child = new PersistentObj(); 44 child.setStrFld("lazy"); 45 po.setChild(child); 46 dao.getHibernateTemplate().save(po); 47 id = po.getId(); 48 49 TransactionStatus status = dao.getTransactionManager().getTransaction(new DefaultTransactionDefinition()); 50 po = (PersistentObj) dao.getHibernateTemplate().get(PersistentObj.class, id); 51 this.setSharedOne(po.getChild()); dao.getTransactionManager().commit(status); 53 } 54 55 public void shareObjWithLazyChild() { 56 Integer id = null; 57 PersistentObj po = new PersistentObj(); 58 po.setStrFld("parent"); 59 PersistentObj child = new PersistentObj(); 60 child.setStrFld("lazy"); 61 po.setChild(child); 62 dao.getHibernateTemplate().save(po); 63 id = po.getId(); 64 65 TransactionStatus status = dao.getTransactionManager().getTransaction(new DefaultTransactionDefinition()); 66 po = (PersistentObj) dao.getHibernateTemplate().get(PersistentObj.class, id); 67 this.setSharedOne(po); dao.getTransactionManager().commit(status); 69 } 70 71 public Integer getSharedId() { 72 PersistentObj persistentObj = (PersistentObj) getSharedOne(); 73 return persistentObj==null ? null : persistentObj.getId(); 74 } 75 76 public String getSharedFld() { 77 PersistentObj persistentObj = (PersistentObj) getSharedOne(); 78 return persistentObj==null ? null : persistentObj.getStrFld(); 79 } 80 81 public HibernateDAO getDao() { 82 return dao; 83 } 84 85 public void setDao(HibernateDAO dao) { 86 this.dao = dao; 87 } 88 89 synchronized public Object getSharedOne() { 90 return sharedOne; 92 } 93 94 synchronized public void setSharedOne(Object sharedOne) { 95 this.sharedOne = sharedOne; 96 } 97 98 } 99 | Popular Tags |