gpt4 book ai didi

hibernate - Hibernate Session.load()何时抛出异常

转载 作者:行者123 更新时间:2023-12-02 23:57:17 25 4
gpt4 key购买 nike

try {
x = session.load(...);
y = x;
}
catch(Exception e) {
//do something
}

如果 key 不存在,load(...) 会抛出异常

  1. 马上
  2. 将返回一个代理,然后抛出异常当稍后尝试从数据库获取对象时?

另外,在上面的代码中,如果执行到赋值 y = x,是否可以保证此时 x 不为 null?是否存在此时 x 可以为 null 的情况?

最佳答案

简而言之:

  • x加载后不会为空,因此 y 也不会为空。
  • load() 可能有也可能没有异常(exception)。如果该对象不存在
  • 如果 load() 没有异常(exception),且该对象不存在,访问 x 时会出现异常或y .

详细说明:

您是否正在尝试确定 key 是否存在?或者您假设是这样,但只是想处理异常情况?

请参阅documentation ,具体来说:

You should not use this method to determine if an instance exists (use get() instead). Use this only to retrieve an instance that you assume exists, where non-existence would be an actual error.

摘自《hibernate in action》一书中关于使用 load() 的内容:

The application may retrieve a valid reference (a proxy) to a persistent instance without hitting the database to retrieve its persistent state. So load() might not throw an exception when it doesn’t find the persistent object in the cache or database; the exception would be thrown later, when the proxy is accessed.

所以:

如果您想知道该项目是否存在,请使用 get() ,不是load() .

关于hibernate - Hibernate Session.load()何时抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11659485/

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