当前位置: 首页 > 面试题库 >

在DAO服务层架构中将Spring MVC与Hibernate一起使用的正确方法是什么

贺波
2023-03-14
问题内容

我在HibernatedaosupportDAO类中使用Spring MVC 。在这里困惑从何处开始事务,它应该在服务层还是DAO层?

我的视图与服务层交互。DAO已注入服务。

在DAO服务层体系结构中将Spring MVC与Hibernate一起使用的正确方法是什么?


问题答案:

恕我直言,交易应转到服务层。通常,一项业务交易包含多个查询和更新。如果@Transactional仅放置在DAO层上,则每个查询和更新将在单独的事务中运行,这实际上违反了事务的目的。

但是,如果服务为@Transactional,则每次数据库交互都会加入一个主要事务,该事务在Web层进入服务层时开始。请注意,在这种情况下,如果Web层运行多个服务方法,则每个方法将在单独的事务中运行(同一问题上移了一个级别)。但是放置@Transactional在Web层中可能会引入意想不到的副作用,例如N
+ 1问题,否则会被捕获。因此,尝试通过Web层调用的一种服务方法来保持一项业务交易。



 类似资料:
  • 我们使用Azure存储队列作为传输在Azure辅助角色中运行NServiceBus 4.6。 我们很乐意使用默认的Azure表存储持久器存储NServiceBus相关数据(sagas、订阅等)。 不过,我们希望将业务实体存储在RavenDB中,以利用查询和Raven的其他功能。 鉴于Azure缺乏事务支持,在我们的处理程序中配置NServiceBus和使用Raven的/的最佳方式是什么。我们希望确

  • 早上好,当对同一个json文件中定义的内容使用$ref时,我在使用ajv和json-schema时遇到了一个问题。我怀疑问题出在ids的使用上,我会更理解这一点。 我的文件是: definitions.json json

  • 我已经设法用HK2注入技术实现了Jersey/Jetty的工作设置,但鉴于我发现的大量文档有些令人困惑(有时甚至不一致),我不确定是否遗漏了一些重要的细节。就目前而言,我是这样引导servlet的; 我将我的应用程序资源配置为; 我的AppBinder为: 这一切都适用于我的简单测试用例,但有几件事我不清楚。泽西文档引用了一个我应该扩展的应用程序类,并使用Injections.addBinding

  • 另外,假设数据库已经创建和填充。 这描绘了一个学生有多门课程... 我的学生实体: Spring Boot指南没有描述联接或DAOS-我只需要学习如何正确地创建finder方法,这些方法模拟select语句,返回列表或数据结构。 感谢你花时间阅读这篇文章...

  • 问题内容: 我正在与我的CompSci教授交谈,他建议将所有String 方法编写为: 而不是: 这两行都可以编译,但是我想知道第一种方法的好处是什么?我一直都是后一种方式。错了吗 什么是普通/常规? 问题答案: 第一种方法确保执行比较时不会收到 NullPointerException 。当您尝试在不存在的对象上调用方法时,抛出(发生)此异常。 以下是一些相关的切线:仔细阅读风险自负 不过要注意

  • 我是一个项目的一部分,我正在尝试添加TypeScript Web Server,这将与Swagger兼容。 什么是最基本的策略来实现它,考虑到容易的可运维性。 > 对于TypeScript,我注意到存在用于从TypeScript接口生成JSON模型的Tyson库。 对于Swagger,我尝试使用“Swagger node restify”库,因为它支持向Swagger添加JSON模型。 然而,我遇