Hibernate、Spring、@Transactional - 用 try/catch 包围?

2024-03-11

我正在使用 Spring 3 和 Hibernate 3.6 开发 Web 应用程序。我有一些问题要问@Transactional注释和代码结构。

-> 当我使用@Transactional(使用 Spring 进行事务管理),我是否必须围绕@Transactional- 调用时使用 try/catch 带注释的方法?

例如,当我得到一个加载、更改并返回一个对象的方法时,我从另一个类调用它:我是否必须用 try/catch 包围该调用?也许出了问题,没有返回对象,数据库连接失败..我不知道。

直到现在我还以为@Transactional关心所有可能发生的异常,并在发生错误时回滚该事务中的每个操作。 但如果发生这种情况,我必须以某种方式通知用户。当我在 try 块中调用事务方法并回滚时,catch 块被激活吗? 我可以告诉用户“确实出了问题”。否则用户可能不会被告知?

或者检查是否有对象返回(if/else)就足够了,那么我不需要try/catch? 我是新人,我想听听其他人如何构建他们的代码。谢谢 :-)


处理异常 http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-exceptionhandlers在 Spring 中使用 HandlerExceptionResolvers 和 @ExceptionHandlers 确实很容易。我倾向于专门使用@ExceptionHandler。

您可以使用@ExceptionHandler http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-exceptionhandlers处理特定的异常,而不是在 try-catch 块中自行处理。

如果用户想要的资源未找到,而您想要发送 404。

@ExceptionHandler(NotFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public void handleNotFoundException(NotFoundException exc) {
  // log something.
}

如果服务器出现问题,您想要发送 500

@ExceptionHandler(SomeException.class)
public void handleException(SomeException exc, WebRequest request, HttpServletResponse response) {
    response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Sorry dude, my server broke");
}

您还应该严格处理异常。一般来说你不应该这样做@ExceptionHandler(Exception.class)我也相信它是按顺序工作的,所以如果你确实处理一般异常,它应该是类中的最后一个方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hibernate、Spring、@Transactional - 用 try/catch 包围? 的相关文章

随机推荐

  • Chrome 72 是否破坏了 css 背景 svgs 的“data:image/svg+xml;utf8”? [复制]

    这个问题在这里已经有答案了 我的 svgs 在 css 中指定如下 background image url data image svg xml utf8
  • Clojure 中的 #^ 运算符是什么意思?

    什么是 在 Clojure 中是什么意思 我的副本Clojure 的乐趣没有在任何地方提到这个运算符 它不在索引中或我查看的文本中的任何位置 我无法真正用 Google 搜索它 因为该运算符由搜索框忽略的特殊字符组成 是元数据的旧形式阅读器
  • 父线程终止时子线程是否退出

    我正在 Visual Studio C 中使用调用 beginthreadex endthreadex 进行一些多线程编程 我创建了一个子线程thread1 子线程在一个永远不会退出的函数上运行 因为它有一个无限循环 现在 如果父线程因错误
  • 从 Symfony2 和 Doctrine2 定义和使用 ENUM 类型的正确方法

    我在我的一张表中使用 ENUM 类型 但 Doctrine 不太喜欢它 所以我做了研究并发现了这个topic https stackoverflow com questions 8750724 what do you use instead
  • Azure - 服务端点和专用端点之间的简单区别

    我无法清楚地理解服务端点和专用端点之间的区别 需要帮助 最好有一个例子 您可能已经在私人链接常见问题解答 https learn microsoft com en us azure private link private link faq
  • 如何在2013 SQL Server数据库项目中创建登录用户

    我正在尝试创建一个具有 SSDT 数据库项目登录名的用户 该登录名已存在于目标服务器上 使用以下 SQL CREATE USER MyLogin FOR LOGIN MyLogin WITH DEFAULT SCHEMA dbo GO 我收
  • Angular 应用程序中的语法错误:意外的标记 <

    我有一个 Angular 应用程序 它可以在我的本地和生产环境中完美运行 经过微小的更改后 我在本地运行了该应用程序并且运行良好 然后我构建了该项目并复制了dist文件夹到 Web 服务器 问题是当我尝试访问该应用程序时 我在 Chrome
  • ASP.NET MVC - 单元测试重写初始化方法

    我有一个如下所示的抽象类 它被所有其他控制器继承 是否有可能测试这个方法 顺便说一句 我正在尝试使用最小起订量 但没有运气 如果您能帮助我 我将不胜感激 public abstract class ApplicationController
  • 为什么 Entity Framework 在直接 select 语句中执行速度比 Dapper 快

    我是使用 ORM 处理数据库的新手 目前我正在制作一个新项目 我必须决定是使用 Entity Framework 还是 Dapper 我读过很多文章 都说 Dapper 比实体框架更快 因此 我制作了 2 个简单的原型项目 一个使用 Dap
  • 如何从 Web 模块使用 @WebServiceRef 注入 EJB

    我有一个 JEE6 应用程序 带有一个 ejb 和一个 Web 模块 在 GlassFish 3 1 1 上运行 现在我想通过将 WebService JAX WS 作为会话 Bean 注入到多个托管 Bean 中来访问它 Stateles
  • 当鼠标悬停在 UWP 按钮上时,按钮会改变颜色

    我正在尝试创建一个 UWP 按钮 当鼠标指针悬停在其上时 该按钮将更改背景颜色 我遇到的麻烦是 默认情况下 它似乎已经做到了这一点 但不是我想要的颜色 当我将鼠标悬停在红色按钮上时 它会变成默认的灰色 然后当我将鼠标移开时又会变回灰色 我用
  • 如何在不使用鼠标的情况下执行虚拟鼠标单击C# [重复]

    这个问题在这里已经有答案了 我想在 Windows 应用程序中执行单击 而不使用真正的鼠标 这样我可以将其最小化 很像机器人的行为 我该怎么做 我认为你正在寻找的功能是PostMessage DllImport user32 dll Set
  • GitLab Runner - 如何一次只允许一个管道运行

    我是 GitLab 新手 面临一个问题 如果我在同一个 gitlab runner 上同时触发两个管道 它们都会并行运行并导致失败 我想要的是将运行限制为一次只运行一个管道 而其他管道则在队列中运行 我已经设置了concurrent 1在
  • 无法向 Google App 脚本授予授权或许可

    为什么我无法向我使用同一 Google 帐户创建的 Google Apps 脚本授予许可 授权 看来 Google 不相信自己能够将自己的 Google Apps 脚本与自己的电子表格一起使用 这是破坏一切的代码行 如果此行不存在 则不会请
  • Android 应用程序将数据发送到 PHP 脚本 - 预期失败

    我尝试开发一个需要将数据发送到 MySql 数据库的应用程序 为了实现它 我创建了一个 httppost 如下所示 public void postData try Create a new HttpClient and Post Head
  • 如何将 C# 程序集资源嵌入到同一个程序集中?

    我已将不同文化的资源添加到我的班级图书馆项目中 构建时 会为每种区域性创建单独的文件夹 每个文件夹中都有一个程序集 有没有办法将所有资源嵌入类库程序集中 而不是为每种文化提供额外的程序集 该类库最终会在另一个项目中使用 因此对于这些单独的文
  • ASP.NET 虚拟路径在哪里解析波形符“~”?

    ASP NET 虚拟路径在哪里解析波浪号 在链接中 例如 它是否重定向 或者RedirectToAction在 ASP NET MVC 中 它从这里获取 VirtualPathUtility ToAbsolute contentPath h
  • 应用程序中所有函数调用的列表

    我们如何列出应用程序中调用的所有函数 我尝试使用 GDB 但它的回溯列表仅到主函数调用 我需要更深入的列表 即主函数调用的所有函数以及从这些被调用函数调用的函数的列表 等等 有没有办法在 gdb 中得到这个 或者你能给我一些关于如何获得这个
  • 基于 socketserver 的 Python 3 服务器关闭挂起

    我正在使用 Python 3 中的线程 SocketServer 开发一个 简单 服务器 我在实施时遇到了很多麻烦shutdown为了这 我在互联网上找到的下面的代码最初可以工作 但在通过 telnet 从客户端发送一些命令后停止工作 一些
  • Hibernate、Spring、@Transactional - 用 try/catch 包围?

    我正在使用 Spring 3 和 Hibernate 3 6 开发 Web 应用程序 我有一些问题要问 Transactional注释和代码结构 gt 当我使用 Transactional 使用 Spring 进行事务管理 我是否必须围绕