worldcreatxr
发贴: 149
积分: 0
|
于 2005-03-15 13:54
如何用junit测试没有手工维护事务的 hibernate 代码
下面这段代码看上去,或运行时都正常,似乎已经把数据写入数据库了。
可是事实上没有
======================================== public void testSaveOrUpdate() { try { PigeonholeType pigeonholeType = new PigeonholeType(); pigeonholeType.setSymbol("none"); PigeonholeRule pigeonholeRule = new PigeonholeRule(); pigeonholeRule.setXtypeSymbol("SB006"); pigeonholeRule.setSize(new Integer(456)); pigeonholeRule.setPigeonholeType(pigeonholeType); pigeonholeRuleDao.saveOrUpdate(pigeonholeRule);
} catch (Exception e) { e.printStackTrace(); }
PigeonholeRule obj = pigeonholeRuleDao.loadByPrimaryKey("SB006"); System.out.println(obj.getSize()); 读数据
Xtype xtype = xtypeDao.loadByPrimaryKey("SB006"); Iterator it = xtype.getSetOfPigeonholeRule().iterator(); while (it.hasNext()) { PigeonholeRule pigeonholeRule = (PigeonholeRule)it.next(); System.out.println(pigeonholeRule.getPigeonholeType().getSymbol()); System.out.println(pigeonholeRule.getPigeonholeType().getTitle()); } }
}
=========================================
public Serializable saveOrUpdate(PigeonholeRule obj) throws DataAccessException { Session session = null; Transaction tx = null; try { session = sessionFactory.openSession(); // tx = session.beginTransaction(); session.saveOrUpdateCopy(obj); session.flush(); // if not use transaction tx.commit(); 这里不手工维护事务 return obj; } catch (HibernateException he) { try { tx.rollback(); } catch(HibernateException hex) { throw SessionFactoryUtils.convertHibernateAccessException(hex); }
throw SessionFactoryUtils.convertHibernateAccessException(he); } finally { SessionFactoryUtils .closeSessionIfNecessary(session, sessionFactory); } }
我是世界的缔造者!
|