环境: 双核 2G内存
DB: mysql hibernate+spring
hibernate执行sql语句的两种方式:
第一种方式:hibernate createSQLQuery里面可以传入传统的sql语句进行查询,它的返回值为一个数组,
第二种方式:hibernate session.connection得到的是一个java.sql.Connection对象,以下的操作就和jdbc一样的操作 。
我用以上两种方式查询1条记录:
String sql = "select m.id,m.m_recordState,m.m_number,m.m_name,m.m_typeid,m.m_spec,m.m_model," +"m.m_color,m.m_weight,m.m_weightunit,m.m_volume,m.m_volumeunit,m.m_height,m.m_width,m.m_oneortwo," + "m.m_state,m.m_recordMaker,m.m_recordDate from t_Material m join t_PurchaseList l on " +
"m.id=l.p_materiaId join t_PurchaseOrder p on p.id=l.parentid " +
"where p.o_vendor='0011' and m.m_state=1 and m.m_recordState=1";
第一种用时 62毫秒 第二种用时47毫秒(我用同事的机器测试第一种方式竟然用了100多毫秒,两种方式用时相差一半多)
我换了sql语句
String sql = "select m.* from t_Material m join t_PurchaseList l on " +
"m.id=l.p_materiaId join t_PurchaseOrder p on p.id=l.parentid " +
"where p.o_vendor='0011' and m.m_state=1 and m.m_recordState=1";
第一种用时 78毫秒 第二种用时47毫秒
所以用hibernate执行sq1语句的两种方式差别:
1: sqlquery :hibernate对其返回值进行了封装相差 connection: hibernate没有对其进行任何的封装 两种方式用时相差很大,(根据机器配置不同,则相差不同)总之,相差近一半.
2: sql语句: 采用select * 和分别列出每个列 对connection来说没有影响,对sqlquery来说也会有相差
分享到:
相关推荐
而Hibernate作为一种流行的Java持久化框架,它允许开发者通过ORM(对象关系映射)方式与数据库进行交互。本篇文章将深入探讨如何使用Hibernate的Query接口来调用Oracle的存储过程和函数,以及提供相关的示例代码和...
Hibernate 提供了多种方式来执行原生 SQL 语句,其中之一是使用 `Session.createSQLQuery()` 方法,该方法返回一个 `SQLQuery` 对象,该对象提供了执行原生 SQL 语句的方法。 例如,我们可以使用以下代码来执行一个...
通过使用Hibernate,我们可以避免编写大量的JDBC代码,提高开发效率,并且能够更好地支持面向对象的设计。 ### SQLServer数据库 SQLServer是由微软公司提供的关系型数据库管理系统,广泛应用于企业级应用。它提供...
2. **查询(Read)**:使用`Session`的`get()`或`load()`方法获取对象,或者使用`createQuery()`或`createSQLQuery()`方法执行HQL(Hibernate Query Language)或SQL查询。 ```java Student student = session.get...
**正文** Hibernate是一款强大的Java持久化框架,它简化了数据库...了解并熟练掌握这些查询技术,将极大地提高开发效率,减少与数据库交互中的错误。希望这篇文章能帮助你更好地理解和使用Hibernate进行数据库查询。
5. **HQL与SQL查询**: Hibernate提供了自己的查询语言HQL,但Access支持的SQL特性有限,因此可能需要编写原生SQL查询并使用`Session`的`createSQLQuery()`方法执行。 6. **优化与注意事项**: 由于Access的性能和...
在这个“Hibernate资源”中,我们将深入探讨Hibernate的基础使用和如何与MySQL数据库进行集成。 首先,让我们了解什么是持久化类。在Hibernate中,持久化类是代表数据库表的Java类。它们包含了属性,这些属性对应于...
此方法与`Session.createSQLQuery()`类似,但可以从实体类或`@NamedQuery`中加载预定义的SQL。它支持结果集映射,包括一对一、一对多等关联关系。 ```java NativeQuery nativeQuery = session.createNativeQuery...
此外,`Session.createQuery()`或`Session.createSQLQuery()`可以用来执行更复杂的HQL(Hibernate Query Language)或原生SQL查询。 6. **事务管理**:在进行多步骤操作时,如同时修改多个记录,需要使用事务确保...
在这个基础demo中,我们将探讨如何搭建Hibernate环境,配置其操作数据库,并了解如何编写与之对应的SQL语句。 首先,**环境搭建** 是整个过程的起点。为了开始使用Hibernate,我们需要在项目中引入Hibernate的依赖...
### Hibernate 查询方式与批处理及连接池配置详解 #### 一、Hibernate 查询方式介绍 Hibernate 是一款优秀的 ORM(对象关系映射)框架,它能够极大地简化数据库操作,并提供多种查询方式来满足不同的业务需求。 #...
可以结合HQL与Criteria,使用`createSQLQuery`方法执行自定义的SQL查询,并通过`setResultTransformer`转换结果。 10. 缓存机制 Hibernate支持一级缓存(Session级别的)和二级缓存(SessionFactory级别的)。二...
在IT领域,尤其是在Java开发与数据库交互的过程中,Hibernate作为一个强大的对象关系映射(ORM)框架,为开发者提供了诸多便利。然而,在处理大量数据时,如何有效地进行批量更新和批量删除操作,是每一个开发者都...
- **数据库连接配置**:Hibernate配置数据库连接通常需要设置以下四个属性:`hibernate.connection.driver_class`、`hibernate.connection.url`、`hibernate.connection.username`、`hibernate.connection.password`...
2. **读取(Read)**:使用`get()`或`load()`方法获取特定ID的对象,`createQuery()`或`createSQLQuery()`执行HQL(Hibernate Query Language)或SQL查询。 3. **更新(Update)**:修改实体对象的属性,然后调用`...
Hibernate 3.2及以上版本开始支持存储过程的调用,主要通过Session的createSQLQuery方法。 ```java SessionFactory sessionFactory = ...; // 获取SessionFactory Session session = sessionFactory.openSession();...
### Hibernate的配置与使用详解 #### 一、Hibernate概述 Hibernate是一种开源的对象关系映射(Object-Relational Mapping,简称ORM)框架,它为Java应用提供了利用SQL数据的持久化解决方案。通过ORM技术,开发人员...
Hibernate可以与其他框架如Spring、MyBatis等无缝集成,进一步提升开发效率。 在“Hibernate入门代码”中,你可能会看到这些概念的实际应用,通过运行案例,你可以更直观地理解它们的工作原理。记得先配置好数据库...
- Hibernate支持一级缓存(Session级别的缓存)和二级缓存(SessionFactory级别的缓存),提高数据访问效率。 - 可以配置第三方缓存服务,如 Ehcache 或 Redis,进一步优化性能。 7. **事务管理** - Hibernate...
2. **直接使用JDBC**:虽然这不是纯Hibernate的方式,但可以直接通过`Session`获取`Connection`,然后创建并执行`CallableStatement`: ```java Session session = HibernateSessionFactory.getSession(); ...