createQuery vs createNativeQuery,更新/删除语句的性能差异



以下两者之间是否存在性能差异:

entityManager.createQuery("UPDATE MyTable SET coll1 = :someValue").setParameter("someValue").executeUpdate();

entityManager.createNativeQuery("UPDATE MyTable SET coll1 = :someValue").setParameter("someValue").executeUpdate();

如果是,它是否足够高,可以使用一种方法而不是另一种方法?

我正在对休眠和实体框架核心进行性能比较。在EF核心中,这种事情只能使用本机SQL来完成(嗯,有第三方库(,所以我想知道我是否应该在我的hibernate项目上为createNativeQuery((.executeUpdate((切换所有createQuery((.executeUpdate((。

与这种性质的任何事物一样,您应该对数据和系统进行测试。

但是,createNativeQuery()接口旨在让您直接调用 SQL,而不是通过 ORM 映射。 这里有一个简单的更新语句,所以生成的 SQL 应该非常接近本机 SQL。

您不依赖于数据库的任何基础功能。 通过ORM进行翻译可能会有一些额外的开销 - 但是您已经通过选择使用ORM接受了该开销。

我会说坚持使用框架,除非测试表明存在明显的性能损失。

最新更新