Hibernate中的find与普通createQuery的区别

开发 后端
本文向您介绍Hibernate中find与普通createQuery在查找数据库操作时的区别。

Hibernate中的find是根据主键首先去缓存中查找,找到就直接返回,找不到就接着去数据库中查找;

而createQuery直接就去数据库中查找,不管缓存中是不是已经存在了;

两者一般情况下逻辑效果是一样的,只是性能上有些差别,但有些特定情况下就不同了。

输入一批“水表数据信息”,循环处理这些信息,当水表信息表示的水表不在数据库中时就根据这些信息构造水表实体存入数据库,输入的“水表数据信息”可能有相同的水表信息,这样就会有多次查找同样水表的查询,但他们返回的结果不应当是相同的,第一次没查到就新建一个,再次查询时应该能查到,否则水表就会重复了。这时候Hibernate find与普通createQuery的区别就显示出来了,新建后再find同样的水表就会查出刚刚建立的水表(虽然他还没有进入数据库,因为循环完后才commit),而createQuery每次查询结果都相同(查不到,因为数据库里没有该水表),这样就会新建多个相同的水表,导致数据库主键重复异常。

【编辑推荐】

  1. 浅谈在Hibernate中使用Oracle sequence
  2. Hibernate中cascade和inverse的相关
  3. Hibernate查询方法之探析
  4. Struts与Hibernate的完美结合方案
  5. 浅谈Struts分页中的Hibernate如何实现
责任编辑:张攀 来源: javaeye.com
相关推荐

2009-06-24 08:02:15

Hibernateupdate与save

2009-06-18 11:43:40

Hibernate uHibernate s

2009-09-22 13:12:25

Hibernateibatis

2017-10-26 14:59:47

MybatisHibernate数据库

2009-06-29 18:32:30

Hibernate

2009-07-09 16:01:27

2009-06-26 16:23:12

Hibernate gHibernate l

2021-12-28 20:06:43

JavaScript开发数组

2009-09-24 13:39:06

Hibernate VHibernate P

2009-06-16 15:03:53

Hibernate保存Hibernate

2009-08-21 09:28:23

this与$(this

2011-08-11 10:22:59

ibatishibernate

2009-06-12 16:24:44

Hibernate lHibernate g

2009-06-17 12:09:41

2009-06-16 09:29:59

2009-12-17 17:17:10

Linux操作系统

2024-03-07 13:30:44

Java对象true

2022-03-30 14:34:21

鸿蒙HarmonyOScss

2009-09-24 14:04:25

Hibernate i

2009-06-17 16:08:58

Hibernate C
点赞
收藏

51CTO技术栈公众号