`
yourenyouyu2008
  • 浏览: 287675 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate 的find与普通createQuery的区别

阅读更多

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

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

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

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

2
0
分享到:
评论

相关推荐

    Hibernate查询解决方案

    本文详细介绍了 Hibernate 提供的各种查询方式,包括 `load`、`get`、`createQuery` 和 `find` 等方法,并重点阐述了 HQL 查询的基本用法和高级技巧。通过本文的学习,读者可以掌握 Hibernate 的基本查询操作,并能...

    hibernate-release-5.0.0.Final(1).zip

    - 使用find()或get()方法获取对象,或使用createQuery()或createSQLQuery()构建查询语句。 - 在事务中执行批量操作,确保数据的原子性和一致性。 - 利用缓存机制提高数据访问速度,如一级缓存(Session级)和二级...

    Hibernate进行数据查询

    【Hibernate进行数据查询】 在Java开发中,Hibernate是一个流行的持久化框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据。本篇将详细阐述如何使用Hibernate进行数据查询,包括基本数据查询...

    Spring/泛型Hibernate的实现

    ### 泛型Hibernate的实现与Spring集成 #### 一、泛型Hibernate概念及其实现 在Java开发领域,尤其在企业级应用开发中,Hibernate框架因其强大的对象关系映射(ORM)能力而受到广泛欢迎。泛型Hibernate是利用Java...

    5.Hibernate 05 Hibernate结合JPA1

    在本文中,我们将探讨如何将Hibernate与Java Persistence API (JPA) 结合使用。首先,我们需要了解JPA的基本概念。 **1. 什么是JPA?** Java Persistence API (JPA) 是Java平台上的一个标准接口,它定义了用来管理...

    Hibernate的Template方法以及SQL简介

    - `List find(String queryString)`:通过HQL(Hibernate Query Language)查询字符串来获取实体集合。 - `List findByNamedQuery(String queryName)`:根据命名查询返回实体集合。 - `Object get(Class entity...

    hibernate增删改查

    `find()`方法可以进行简单的SQL查询,而`createQuery()`和`createSQLQuery()`则支持更复杂的HQL(Hibernate Query Language)和原生SQL查询。 7. **事务管理**:在执行增删改查操作时,通常需要包裹在事务中以确保...

    Hibernate经典入门教程

    3. 查询:find()方法根据ID查找对象,而createQuery()和createSQLQuery()用于HQL和SQL查询。 六、Criteria查询 Criteria查询提供了一种面向对象的查询方式,避免了直接编写SQL。通过DetachedCriteria可以构建复杂的...

    实现自己的Hibernate框架之Session 方法实现

    5. **查询(createQuery()、createSQLQuery()、find()等)**:Hibernate提供丰富的查询方式,如HQL(Hibernate Query Language)、 Criteria API 和原生SQL查询。createQuery()用于执行HQL,createSQLQuery()执行...

    hibernate-3.2.1.jar.zip

    它的find()方法用于按ID查找对象,createQuery()和createNativeQuery()用于执行JPQL和原生SQL。 总的来说,Hibernate 3.2.1提供了强大的ORM功能,使得Java开发者能够以对象的方式处理数据库操作,降低了数据库操作...

    Hibernate教程(数据查询)HQL,PDF格式

    ### Hibernate教程:数据查询与HQL详解 #### 引言 Hibernate是一款强大的对象关系映射(ORM)框架,它能够将Java对象与数据库表进行映射,极大地简化了数据库操作的复杂度。在数据查询方面,Hibernate提供了多种...

    hibernate二级缓存

    其中,`<property name="hibernate.cache.use_query_cache">true</property>`这一配置用于启用查询缓存,意味着通过findall()、list()、Iterator()、createCriteria()、createQuery()等方法获取的数据结果集会被缓存...

    hibernate基础.doc

    它用于收集和管理与Hibernate运行环境相关的所有设置,例如数据库连接信息。这包括数据库URL(如jdbc:mysql://localhost:3306/mydb)、用户名、密码、JDBC驱动类(如com.mysql.jdbc.Driver)以及数据库方言(dialect...

    hibernate一对一实例

    在Java的持久化框架中,Hibernate是一个非常重要的工具,它为开发者提供了方便的数据访问接口,大大简化了数据库操作。在数据库关系模型中,一对一(One-to-One)关联是一种常见的关系类型,表示两个实体之间存在...

    Hibernate跟Spring的分页

    这样,我们就实现了Spring MVC控制器与Hibernate Repository之间的分页集成。 总结来说,Hibernate和Spring的分页功能都是为了优化数据库查询性能,避免一次性加载大量数据导致内存压力。通过合理利用Hibernate的...

    struts+hibernate网络购物系统

    Struts会通过Action类处理用户的请求,调用相应的业务逻辑方法,这些方法可能需要与Hibernate的Session交互,例如,通过Session的save()、update()、delete()方法进行数据操作,通过find()或createQuery()方法进行...

    搭建一个JPA+hibernate实例

    在Java世界中,Java Persistence API(JPA)和Hibernate是两个非常重要的持久层框架,用于管理应用程序中的对象-关系映射(ORM)。JPA是一种标准的API,而Hibernate是其最流行的实现之一。本教程将指导你如何搭建一...

    hibernate中文参考文档

    5. **对象的检索(Find)**: 使用Session的get()方法或createQuery()执行HQL查询,可以获取数据库中的对象。 6. **对象的级联操作(Cascading)**: 通过设置 Cascade 属性,可以将操作(如保存、更新、删除)自动...

Global site tag (gtag.js) - Google Analytics