Hibernate中的find与普通createQuery的区别

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

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

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

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


名称栏目:Hibernate中的find与普通createQuery的区别
URL网址:http://www.hxwzsj.com/article/dpocddh.html

其他资讯

Copyright © 2025 青羊区翔捷宏鑫字牌设计制作工作室(个体工商户) All Rights Reserved 蜀ICP备2025123194号-14
友情链接: 成都网站制作 营销型网站建设 成都网站建设 网站设计公司 手机网站建设 古蔺网站建设 成都网站制作 成都营销网站制作 手机网站制作 重庆网站设计 网站设计制作 温江网站设计 重庆企业网站建设 企业网站制作 网站制作 成都网站建设 定制网站设计 成都营销网站建设 成都网站建设 网站制作 重庆网站建设 响应式网站设计