`

createQuery与createSQLQuery区别

 
阅读更多
createQuery与createSQLQuery区别      


hiabernate 中createQuery与createSQLQuery区别,使用经验
createQuery与createSQLQuery两者区别是:


前者用的hql语句进行查询,后者可以用sql语句查询

前者以hibernate生成的Bean为对象装入list返回

后者则是以对象数组进行存储

所以使用createSQLQuery有时候也想以hibernate生成的Bean为对象装入list返回,就不是很方便

突然发现createSQLQuery有这样一个方法可以直接转换对象

Query query = session.createSQLQuery(sql).addEntity(XXXXXXX.class);

XXXXXXX 代表以hibernate生成的Bean的对象,也就是数据表映射出的Bean。

呵呵以后多注意,还是时不时的要看看hibernate各个对象方法的使用。



还有另外一个相关的小细节应注意:

比如有这样一个po

PO: User.class
properties: userId,userName
DDL: create table tuser (userid varchar(10),username varchar(20));

当执行:
    session.createQuery("from User u").list()时生成的SQL:
  select userid,username from tuser;

当执行:
  
session.createQuery("from User u").iterator()时生成的SQL:
  
select userid from tuser;
  
可以看出list()一次将数据从数据库中读出直接填充到List中
  
iterator()将数据的主键从数据库中读出,当循环这个Iterator时才添加执行:
  
select userid,username from user where userid=?;把数据读出。

在不同的应用范围使用不同的方法,具体在hibernate应用中应当注意。
分享到:
评论

相关推荐

    关于hibernate 的createQuery和createSqlQuery 的区别

    与 createQuery 方法不同的是,createSqlQuery 方法可以执行查询、修改和添加操作。 使用 createSqlQuery 方法可以执行以下操作: 1. 查询操作:使用 createSqlQuery 方法可以执行查询操作,例如: String sql = ...

    hibernate 的createSQLQuery的几种用法

    这个查询加载了关联的 kitten 实体,并将其与 cat 实体关联起来。 四、返回标量值 使用 createSQLQuery 方法可以返回一个简单的标量值,例如: ```java Double max = (Double) sess.createSQLQuery("select max...

    SSH实现分页

    在Hibernate中,可以通过Session接口的createQuery或createSQLQuery方法结合setParameter来实现分页。具体步骤如下: - 使用createQuery或createSQLQuery创建查询。 - 调用setFirstResult设置起始位置。 - 调用...

    ceateQuery ceateSQLQuery

    此外,还有一个关于`createQuery`的迭代器方法`iterator()`与`list()`的区别。`list()`方法会一次性从数据库中读取所有匹配的记录,并填充到一个List中,适合于数据量较小的情况。而`iterator()`方法则只获取记录的...

    hibernate实现增删改查

    4. **查询**:使用Session的createQuery或createSQLQuery方法创建HQL(Hibernate Query Language)或SQL查询,执行查询并获取结果集。例如,`List<User> users = session.createQuery("from User").list()`将返回...

    hibernate分页查询

    Hibernate分页查询基于SQL的LIMIT和OFFSET子句,通过Session的createQuery或createSQLQuery方法创建查询,并设置FirstResult和MaxResults属性来实现分页。FirstResult表示从结果集的第几个元素开始获取,MaxResults...

    hibernate查询详细代码讲解

    在Hibernate中,我们可以通过Session对象的createQuery或createSQLQuery方法来执行HQL。例如: ```java Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); ...

    Android应用源码Hibernate4Android.rar

    通过Session的createQuery或createSQLQuery方法,开发者可以构建复杂查询。 6. 数据库初始化 在Android应用启动时,通常需要初始化数据库,包括创建表和填充初始数据。Hibernate4Android提供了...

    Struts + Hibernate 实现简单分页功能

    在SessionFactory的帮助下,我们可以创建Session对象,然后调用它的createQuery或createSQLQuery方法来构造SQL查询语句。在SQL中,我们可以使用LIMIT和OFFSET子句来限制返回的记录数,OFFSET表示从哪一条记录开始,...

    hibernate的HQL的jar

    4. **查询**:使用Session的createQuery或createSQLQuery方法创建HQL或SQL查询,然后设置参数并执行。 5. **结果处理**:HQL查询返回的结果可以是List对象,其中包含了查询结果对应的Java对象。 总的来说,...

    Hibernate-HQL.rar_HQL_hibernate hql

    在Hibernate中,通过Session对象的createQuery或createSQLQuery方法创建HQL查询,然后调用list、uniqueResult、scroll等方法执行查询。执行过程中,Hibernate会自动进行类型转换和结果集的封装,极大地降低了开发...

    Hibernate查询解决方案

    Session 对象与查询操作 在 Hibernate 中,所有持久化操作都需要通过 Session 对象来完成,包括查询操作。Session 对象提供了多种查询方法,如 `load`、`get`、`createQuery` 和 `find` 等。 - **`load` 方法**:...

    Hibernate分页总结

    使用`createQuery()`或`createSQLQuery()`创建Query对象后,可以调用`setFirstResult()`设置起始索引,`setMaxResults()`设置每页的最大数量来实现分页。例如: ```java Session session = sessionFactory....

    Hibernate_NSQL&HQL增删改操作

    #### HQL与NSQL的区别 1. **语法风格**:HQL更加面向对象,语法结构与Java类及其属性紧密相关;而NSQL则遵循标准SQL语法。 2. **类型安全**:HQL支持类型安全的参数绑定,而NSQL则需要显式指定参数类型。 3. **可...

    Hibernate_Query查询所有数据

    SQLQuery sqlQuery = session.createSQLQuery("SELECT * FROM your_table_name"); sqlQuery.addEntity(YourEntityName.class); List<YourEntityName> allData = sqlQuery.list(); transaction.commit(); ...

    Query对象setResultTransFormer()

    Query 对象可以通过 Session 对象的 createSQLQuery() 或 createQuery() 方法创建,例如: ```java Session session = sf.openSession(); Query query = session.createSQLQuery("select * from Tree t where pid in...

    Hibernate查询语言.doc

    Hibernate也允许使用原生SQL查询,通过`createSQLQuery()`方法创建`SQLQuery`对象,然后可以使用`addEntity()`或`setResultTransformer()`将结果转换为对象。 总的来说,Hibernate的查询语言提供了一套灵活且强大...

    4.Hibernate-04查询以及优化策略1

    在上面的代码中,我们使用 `createQuery` 方法创建了一个 HQL 查询对象,该对象将根据 `Order` 对象的属性来查询数据库中的数据。 1.2 基于 SQL 的 HQL 查询 基于 SQL 的 HQL 查询是 Hibernate 提供的一种查询方式...

    Hibernate查询语言

    首先,我们要理解HQL与SQL的区别。SQL是结构化查询语言,直接针对关系数据库进行操作,而HQL则是将这些操作转化为面向对象的形式。这使得在ORM(对象关系映射)框架如Hibernate中,开发者可以更自然地进行数据库操作...

    HQL经典语句

    Query query = session.createSQLQuery("SELECT {c.*} FROM customers c WHERE c.name LIKE :customerName AND c.age = :customerAge"); query.setString("customerName", "tom"); query.setInteger("customerAge...

Global site tag (gtag.js) - Google Analytics