以下两者之间是否存在性能差异?
entityManager.createQuery("UPDATE MyTable SET coll1 = :someValue").setParameter("someValue").executeUpdate();
和
entityManager.createNativeQuery("UPDATE MyTable SET coll1 = :someValue").setParameter("someValue").executeUpdate();
如果可以,使用一种方法是否足够高?
我正在对休眠和实体框架核心之间的性能进行比较。在EF核心中,此类操作只能使用本机SQL来完成(嗯,有第三方库),因此我想知道是否应该将所有createQuery()。executeUpdate()切换为createNativeQuery()。executeUpdate()我的休眠项目。
答案 0 :(得分:2)
与任何这种性质的东西一样,您应该对数据和系统进行测试。
但是,createNativeQuery()
接口旨在让您直接调用SQL,而不是通过ORM映射。您在此处有一条简单的更新语句,因此生成的SQL应该非常接近本机SQL。
您不依赖数据库的任何基础功能。通过ORM进行翻译时可能会有一些额外的开销-但是您已经选择使用ORM来接受该开销。
我会坚持使用框架,除非测试表明存在明显的性能损失。