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 的区别
hibernate 的createSQLQuery的几种用法总结
Query query=session.createQuery("select count(*) from Student") //avg()取得Student平均年龄 Query query=session.createQuery("select avg(s.age) from Student as s") //upper()方法将字符串转为大写...
EJB3.0开发文档,适合新手,EJB3.0比2.0要开发容易多了,讲的很好
2. Hibernate中的createQuery方法 1)、uniqueResult()方法,返回一个单个对象 2)、list()方法返回一个集合 3)、参数绑定 4)、setParameter()方法,绑定任意类型的参数 5)、setProperties()方法,把命名参数与一...
Query query = session.createQuery("from UserManager u where u.userName = :uname and u.password = :upsw"); query.setString("uname", uName); query.setString("upsw", psw); //根据参数位置设置参数,...
var createQuery = require ( 'aws-ec2-running' ) ; createQuery(opts [,clbk]) 创建一个新的Query实例,以从检索running EC2实例的列表。 var opts = { 'key' : 'XXXXXXXXXXXXXXXXXX' , 'secret' : '...
var createQuery = require ( 'aws-ec2-metrics' ) ; createQuery(opts [,clbk]) 创建一个新的Query实例,以从检索running EC2实例的指标。 var opts = { 'key' : 'XXXXXXXXXXXXXXXXXX' , 'secret' : '...
Query query=session.createQuery(hql) ; query.setString(0, u.getUsername()); query.setString(1, u.getUserpass()); query.setInteger(2, u.getUserright()); List<User> list=query.list(); if...
主要介绍了Symfony查询方法,结合实例形式总结分析了createQuery与getQuery查询数据的具体使用技巧,需要的朋友可以参考下
HQL是完全面向对象的查询语言,因此...(3)以HQL语句作为参数,调用Session的createQuery方法创建查询对象; (4)如果HQL语句包含参数,调用Query的setXxx方法为参数赋值; (5)调用Query对象的list等方法遍历查询结果。
对象导航检索:根据某个对象导航查询与该对象关联的对象数据 HQL检索:通过query接口对象查询 QBC检索:通过criteria接口对象查询 SQL检索:通过SQL语句查询 2、HQL检索方式: 查询全部数据:session....
Query query = session.createQuery("from News order by id desc"); query.setFirstResult((pb.getCurrentPageNum()-1)*pb.getPageSize()); query.setMaxResults(pb.getPageSize()); list = query....
createQuery( Long . class); cq . select(qb . count(cq . from( MyEntity . class))); cq . where( /* your stuff */ ); return entityManager . createQuery(cq) . getSingleResult(); 使用规范界面进行dynamic ...
Hibernate使用中防止SQL注入的几种方案 Hibernate是一个开放源代码的...Query query=session.createQuery(hql); query.setString(“name”,name); 2.对参数位置进行邦定: Query query=session.createQuery(hql);
Hibernate二级缓存 在一个数据库系统中,如果缓存设置的合适,那么可以极大的提高系统的效率,Hibernate作为一个ORM工具 提供了缓存的机制,包括一级(Session级)缓存和二... createQuery()等方法获得的数据结果集。
1、HQL是面向对象的,所以HQL与数据库无关 2、HQL最终也会生成SQL,也就是说 HQL使用范围是<SQL的范围 3、HQL是由query对象获得。 HQL查询 1.查询全部 @org.junit.Test public void hql(){ String hql=from ...
使用.createQuery()将创建查询,因此您可以将其与您喜欢的负载测试器一起使用。如何使用它? 导入软件包。 阅读架构。 初始化测试器,并将架构作为第一个参数传递。 如果存在多个模式,则将带有模式的数组传递给...
4.3 STATELESS SESSION BEAN与STATEFUL SESSION BEAN的区别...22 4.4 如何改变SESSION BEAN的JNDI 名称22 4.5 SESSION BEAN的生命周期..........23 4.6 拦截器(INTERCEPTOR) ...26 4.7 依赖注入(DEPENDENCY ...