设置会话刷新模式 Hibernate 在 Spring
我正在编写集成测试,并且在一个测试方法中,我想写下一些数据 DB, 然后读它们。
正如您在存储和读取数据之间看到,必须重置会话,因为默认情况下
掠夺
, 因此,无法实际保存数据 DB.
问题:
我可以以某种方式安装
在
在会议工厂或其他地方避免重复
?
所有通话 DB 在 DAO instance
.
提前致谢。
@RunWith/SpringJUnit4ClassRunner.class/
@ContextConfiguration/locations = {"classpath:applicationContext.xml"}/
@TransactionConfiguration//
@Transactional
public class SimpleIntegrationTest {
@Resource
private DummyDAO dummyDAO;
/**
* Tries to store {@link com.example.server.entity.DummyEntity}.
*/
@Test
public void testPersistTestEntity// {
int countBefore = dummyDAO.findAll//.size//;
DummyEntity dummyEntity = new DummyEntity//;
dummyDAO.makePersistent/dummyEntity/;
//HERE SHOULD COME SESSION.FLUSH//
int countAfter = dummyDAO.findAll//.size//;
assertEquals/countBefore + 1, countAfter/;
}
}
正如您在存储和读取数据之间看到,必须重置会话,因为默认情况下
FushMode
掠夺
AUTO
, 因此,无法实际保存数据 DB.
问题:
我可以以某种方式安装
FlushMode
在
ALWAYS
在会议工厂或其他地方避免重复
session.flush//
?
所有通话 DB 在 DAO instance
HibernateTemplate
.
提前致谢。
没有找到相关结果
已邀请:
3 个回复
帅驴
赞同来自:
君笑尘
赞同来自:
经过 applicationContext.xml
如果您对此情景工作的交易有疑问,请查看源
http://static.springsource.org ... .html
.
你也可以使用
http://static.springsource.org ... .html
用于代理事务。
喜特乐
赞同来自:
http://docs.jboss.org/hibernat ... shing
, 在以下几点中默认情况下会发生清洗:
在执行一些请求之前
经过 org.hibernate.Transaction.commit//
经过 Session.flush//
因此,在呼叫之前
会话中的对象已在数据库中重置。 安装 FlushMode 在 ALWAYS 不需要。