Java 如何正确使用Spring数据的save方法?

Java 如何正确使用Spring数据的save方法?,java,spring,spring-data-jpa,Java,Spring,Spring Data Jpa,我想知道如何处理save方法。让我们考虑一个情况,当我想登记一个新的用户。首先,我需要检查是否有一个与该Id或登录名。如果我找不到任何人,我就可以创建一个新的,并使用Spring数据的save方法 当我发现有人有这样的登录时会发生什么?我应该抛出一个异常吗?我不喜欢他们,对我来说,有时就像逃避问题。返回null而不是对象也不是一个好的选择,不是吗?这是我的问题,我想以最温和的方式解决。返回什么以及如何处理这种情况。也许例外是必要的?然后在我的控制器中处理它并处理它。我希望你能给我一些建议。我宁愿

我想知道如何处理save方法。让我们考虑一个情况,当我想登记一个新的用户。首先,我需要检查是否有一个与该Id或登录名。如果我找不到任何人,我就可以创建一个新的,并使用Spring数据的save方法


当我发现有人有这样的登录时会发生什么?我应该抛出一个异常吗?我不喜欢他们,对我来说,有时就像逃避问题。返回null而不是对象也不是一个好的选择,不是吗?这是我的问题,我想以最温和的方式解决。返回什么以及如何处理这种情况。也许例外是必要的?然后在我的控制器中处理它并处理它。我希望你能给我一些建议。我宁愿向有经验的人请教一些技巧和几句话,而不是从互联网上的大多数页面上得到一个普通的解决方案。谢谢:D

异常字面上的意思是“由于正常工作流之外的情况,我无法正常完成此操作,
AccountAlreadyExists
是何时引发异常的完美示例。您不是在“逃跑”,而是在通知应用程序的更高层,它将不得不处理该问题。作为一个思维实验:如果你有不止一个原因导致某件事情失败怎么办?您如何区分
null
(重复帐户)和
null
(禁用域名)

请注意,在这种情况下,您肯定应该拥有类似于
UserAccountService
的服务,其职责是强制执行“无重复帐户”之类的规则,而这将是实际调用
userRepository.save(newUser)
的对象

如果您使用的是SpringMVC视图,那么您需要捕获控制器中的异常并将用户发送到错误页面。如果您使用的是JSON API,那么您可能希望让异常转义以向客户端返回错误;考虑用<代码> @响应状态(UNCurabable实体)< /C> >或类似的方式注释异常类。