gpt4 book ai didi

java - EntityManager.persist() 之后会发生什么

转载 作者:行者123 更新时间:2023-11-30 06:32:18 25 4
gpt4 key购买 nike

EntityManger 注入(inject)了 @PersistenceContext 注解。这是我的“DAO/Repository”类中未注释的方法。此类被注入(inject)到需要从数据库获取数据/向数据库获取数据的 EJB。

直到现在我都认为在下面的 persist 方法完成后,persistencecontext 被刷新并且数据被存储到数据库但是从我的应用程序中发生的事情我开始怀疑这一点。我已经在 Glassfish 中创建了数据源和连接池,所以据我所知,我正在使用容器管理的事务,但是我没有使用任何事务注释。

有人可以帮我解释一下吗?

public void persist(QuestionFeedback questionFeedback) {
questionFeedback.setCreated(new Date());
entityManager.persist(questionFeedback);
}

使用 Glassfish 3,Java EE6 兼容性

最佳答案

persist 方法使实体持久化,但尚未将更改写入数据库。这通常发生在事务提交时(提供者可以自由优化它,它可能发生得更早)。

使用flush,您可以强制写入更早发生,但它仍然只对参与当前事务的代码可见。要使写入永久化(对所有外部代码可见),仍需要提交事务。

如果没有任何显式注释,您的 EJB bean 默认是事务性的。

关于java - EntityManager.persist() 之后会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8869260/

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