Spring+Hibernate延迟加载测试基类

来源:互联网 发布:wifi没有可切换的网络 编辑:程序博客网 时间:2024/05/21 15:48

 

  1. package cn.com.oneslife;   
  2.   
  3. import junit.framework.TestCase;   
  4.   
  5. import org.hibernate.Session;   
  6. import org.hibernate.SessionFactory;   
  7. import org.junit.AfterClass;   
  8. import org.springframework.context.ApplicationContext;   
  9. import org.springframework.context.support.FileSystemXmlApplicationContext;   
  10. import org.springframework.orm.hibernate3.SessionFactoryUtils;   
  11. import org.springframework.orm.hibernate3.SessionHolder;   
  12. import org.springframework.transaction.support.TransactionSynchronizationManager;   
  13.   
  14. public abstract class AbstractTest extends TestCase{   
  15.   
  16.     private static SessionFactory sessionFactory ;   
  17.     private static ApplicationContext act;   
  18.   
  19.     public void setUp() throws Exception {   
  20.         act = new ClassPathXmlApplicationContext("applicationContext.xml");   
  21.         sessionFactory = (SessionFactory) getBean("sessionFactory");   
  22.         Session s = sessionFactory.openSession();   
  23.         TransactionSynchronizationManager.bindResource(sessionFactory,   
  24.                 new SessionHolder(s));   
  25.     }   
  26.   
  27.     protected static Object getBean(String beanName) {   
  28.         return act.getBean(beanName);   
  29.     }   
  30.   
  31.     public void tearDown() throws Exception {   
  32.         SessionHolder holder = (SessionHolder) TransactionSynchronizationManager   
  33.                 .getResource(sessionFactory);   
  34.         Session s = holder.getSession();   
  35.         s.flush();   
  36.         TransactionSynchronizationManager.unbindResource(sessionFactory);   
  37.         SessionFactoryUtils.closeSession(holder.getSession());   
  38.     }   
  39. }