Hibernate中的find与普通createQuery的区别

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

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

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

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

文章名称:Hibernate中的find与普通createQuery的区别
文章地址:http://www.hantingmc.com/qtweb/news44/444794.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联