gpt4 book ai didi

java - 使用 Spring MVC 和 Hibernate 每个请求的单个事务

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

我想使用 Spring MVC 和 Hibernate。我不想在所有 Controller 方法上使用服务层或 @Transactional 属性(或者,更确切地说,我希望 Spring 将它们全部视为事务性的)。所以我想在 Controller 方法开始与数据库一起工作时启动事务,并在 Controller 方法返回 ViewAndModel 或发生任何错误时回滚事务时提交事务。我还希望 View 支持延迟 hibernate 加载,例如如果 html 模板请求,则以自动提交模式选择数据。

我知道最佳实践涉及创建一个带有 @Transactional 属性的单独服务层,但我的应用程序不会从这种额外的复杂性中受益,我想尽可能地简化代码。

我了解到 OpenSessionInViewInterceptor 允许在 View 中继续使用 hibernate session ,因此这可能解决了我的第二个要求。但是如何使所有 Controller 方法都具有事务性呢?

理想情况下,如果我需要的话,我想要一种简单的方法来选择退出这种行为。例如。所有方法都是事务性的,但我可以应用类似@NonTransactional 的方法并更精细地管理事务。

最佳答案

实际上,OpenSessionInViewInterceptor 将在您的任何 Controller 代码启动之前打开一个 session (并且隐含一个事务),并在 http 请求完成之前关闭它。所以它应该可以解决您的两个要求。

参见 source

OpenEntityManagerInView 也是如此。

关于java - 使用 Spring MVC 和 Hibernate 每个请求的单个事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54482259/

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