gpt4 book ai didi

hibernate - Java EE 容器中的 JPA 异常翻译

转载 作者:行者123 更新时间:2023-12-03 21:40:16 25 4
gpt4 key购买 nike

有没有一种简单的方法可以将 JPA 异常转换为应用程序异常?

我的 Java EE 容器 (JBoss) 中的远程 session Bean 由客户端通过 RMI 调用。 session Bean 注入(inject)了 JPA 实体管理器,并将某些内容写入数据库。事务由容器 (JTA) 处理。如果在写入数据库时​​发生任何异常,则将此异常抛出给客户端。由于我使用的是 Hibernate,因此客户端中出现了 Hibernate 异常。客户端不知道任何 Hibernate 库,因此我在客户端中收到 ClassNotFoundExceptions。现在我想翻译容器中的异常并抛出我的客户可以处理的异常。我有以下想法,但我认为它们都有一个缺点:

  • 避免 JPA 异常,例如通过在写入数据库之前检查约束。这意味着在业务逻辑中复制数据库约束。
  • 在业务方法中刷新实体管理器,并捕获和翻译在方法内部刷新期间可能引发的任何错误。好吧,我喜欢 Persistence Provider 尽可能长时间地推迟与数据库的任何对话的想法。
  • 禁用容器管理事务并在我自己的拦截器中进行事务管理。通过这种方式,我可以捕获在提交之前或期间发生的所有异常,并将它们包装到我的应用程序异常中。
  • 使用 Spring JPA 和 Springs 异常翻译功能。好吧,我已经在 J​​ava EE 容器中,也许有一些 Java EE 方法可以进行异常转换?
  • 最佳答案

    我的建议是将 Hibernate 库提供给客户端,并告诉客户端不要使用它们(调试除外)。

    这是一个众所周知的提示异常破坏封装的例子。

    关于hibernate - Java EE 容器中的 JPA 异常翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19948659/

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