2011-10-25 47 views
3

我知道这是一个很多时候被描述的常见问题。 但我仍然无法得到一些东西 - 性能呢?哪种方法更快?其实,我需要一个简单的东西:页面发出一个POST请求:id = 0,name ='John'。服务器端脚本应检查id = 0,然后在数据库中创建新记录,否则更新现有。休眠:加载vs得到

我认为get()对我来说更有用,因为它将在DB中不存在记录时返回NULL,而load()可以返回一些temproray对象。 谢谢

+0

这将取决于很多事情。可能大部分是底层数据库。还有什么比例找到/未找到?从你的公式看,听起来好像你期望很多“错过”。 – vidstige

+0

found/not found意味着具有这样的id的记录实际存在于DB中。比方说,我需要一些独特的方式来检查记录是否存在于数据库中(通过load()或get()方法),但不以牺牲性能为代价 – nKognito

+0

此描述非常清晰http://gmarwaha.blogspot。 com/2007/01/hibernate-difference-between-sessions.html –

回答

6

下面是Hibernate的论坛,在我的谷歌查询的第一个结果(Hibernate load vs get)等效问题的链接:https://forum.hibernate.org/viewtopic.php?p=2387456

有其规定如下:

的load()方法较旧;由于用户 请求,get()被添加到Hibernate的API中。差异是微不足道的:

如果load()无法在缓存或数据库中找到对象,则抛出异常 。 load()方法永远不会返回null。如果找不到对象,则get()方法返回 。

+0

我看到了这个话题。问题更像是:load()方法更快,然后get()?或者反之亦然 – nKognito

+0

@nKognito考虑到Hibernate 3.4源代码没有太大的区别。实际上,只是在上述检查的不同点上调用相同的方法。 – Thomas

+1

所以我们可以说方法得到的速度更快,因为没有必要为这个块试一试。 –