在JPA中,如果我尝试使用setter和getter方法更新托管对象而不使用事务开始和提交,考虑到FlushType
在AUTO
中,JPA是否会自动更新数据库(不是立即而是稍后)。
我使用的实现(DataNcore us JPA)确实允许这样做(例如自动提交模式)。如果该模式未启用,则它会退回到标准JPA所做的事情,即在下一个事务之前保留这些更改。
在 JPA 中,实体状态转换不会自动与数据库同步。如果实体附加到持久性上下文,则在刷新时,自动脏检查机制会将对象状态更改转换为 DML 语句。
但这需要实体由持久性上下文管理,否则,脏检查机制将不会触发。
尽管JPA规范仅要求实体状态转换包装在逻辑事务中:
持久化
合并
删除
您应该始终使用事务,即使仅在读取数据时也是如此。
如果在读取数据时不显式地使用事务,那么就退回到自动提交模式,这给连接池机制带来了额外的压力,并最终导致每个查询只有一个数据库事务。
问题内容: 我目前正在阅读Hibernate文档,并且遇到以下引号: 如果Session引发异常(包括任何SQLException),请立即回滚数据库事务,调用Session.close()并丢弃Session实例。某些会话方法不会使会话保持一致状态。Hibernate抛出的异常不能被视为可恢复的。通过在finally块中调用close()来确保关闭会话。 就我而言,这一切都说得通,但这确实让我想
我正在处理一些旧的应用程序代码,其中似乎涉及到几个概念,因此我希望能够将它们改进为一个坚实而严格的实践。 基本上,整个代码都用这样的HibernateSessionRequest estFilter包装 然后,有一个拦截器,做这样的事情 然后还有更多的业务逻辑代码,包括更多的初始事务和会话清除等。 那么,问题是: 当在同一会话中多次调用beginTransaction时会发生什么 非常感谢。
我的问题是JPA/Hibernate在调用entityManager时返回true。getTransaction()。isActive(),即使我没有显式启动事务(请参阅下面的代码)。 这里的问题是,我想从数据库中读取一些内容,在这种情况下,SerializationException是可以的,因为这只是表明持久化对象不再适合实际代码,需要重新计算。下面的代码不只是返回null,而是引发以下异常:
问题内容: When I call: 我得到标题中提到的异常。 我正在使用Hibernate JPA。 问题答案: 在我自己遇到这个问题并花了几个小时试图解决这个问题之后,我终于找到了一个原因:Spring有一个错误,并且@如果同一类具有用于自动装配的注释,则无法维护带有注释的事务。 一旦从相关服务类中删除了注释,并且在XML配置中声明了一个适当的bean: 问题解决了。
问题内容: 我正在通过遵循一个教程来研究示例Spring Hibernate示例,并且陷入了异常说 这是我的代码: Person.java- 简单的POJO person.hbm.xml- 映射文件 PersonDao.java- 我的DAO类 PersonService.java- 服务层 spring-config.xml -Spring配置文件: 最后是我的 主程序-MainApp.java
我需要从起始偏移量到结束偏移量读取一组记录。我使用专用Kafka消费品。我至少同意一次语义(在这种情况下,如果给定的应用程序实例宕机,新的应用程序实例从该起始偏移量重新读取记录)。 那么,我可以使用这样的代码吗? 因此: 我没有 是正确的代码吗?或者它有一些隐藏的问题?