gpt4 book ai didi

hibernate - 在 Spring 中设置 Hibernate session 的刷新模式

转载 作者:行者123 更新时间:2023-12-02 23:32:32 31 4
gpt4 key购买 nike

我正在编写集成测试,在一种测试方法中,我想将一些数据写入数据库,然后读取它。

@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);
}
}

正如您在存储和读取数据之间所看到的,应该刷新 session ,因为默认的 FushModeAUTO 因此没有数据实际上可以存储在数据库中。

问题:我能否在 session 工厂或其他地方将 FlushMode 设置为 ALWAYS 以避免重复 session.flush( ) 打电话?

DAO 中的所有数据库调用都与 HibernateTemplate 实例一起使用。

提前致谢。

最佳答案

尝试添加以下内容:

@Autowired
private SessionFactory sessionFactory;

@Before
public void myInitMethod(){
sessionFactory.getCurrentSession().setFlushMode(FlushMode.ALWAYS);
}

关于hibernate - 在 Spring 中设置 Hibernate session 的刷新模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4041645/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com