Hibernate检索方式浅记
2015-08-27 10:17
281 查看
今天学习了Hibernate检索方式:HQL检索,QBC检索,本地SQL检索
数据库:STUDENTS为表
![](http://img.blog.csdn.net/20150827093825834)
类:Students.java
一、HQL检索是面向对象的,由Hibernate对其解析,然后根据对象-关系的映射信息来翻译成相应的SQL语句。HQL查询语句的主体是域模型中的类及类的属性。如Students持久化类名字,sname持久化类的属性名字。session.createQuery()
二、本地SQL检索方式,用sql语句查询,以对象数组进行存储。 session.createSQLQuery()
有的应用程序需要根据底层数据库的SQL方言,来生成一些特殊的查询语句。
使用addEntity()方法将SQL表的别名和实体类联系起来,并且确定查询结果集的形态
三、QBC检索,支持在运行时动态生成查询语句,由Criteria接口,Criterion接口和Restrictions类组成
1、调用Session的CreateCriteria()方法创建一个Criteria对象
2、设定查询条件。Restrictions设定查询条件的静态方法,并返回Ctriterion实例,每个实例代表一个查询条件,利用add()方法加入
3、调用Criteria的List()方法执行查询语句.
------------ 初始学习Hibernate的检索方式,并记录,以便温故 -------------
数据库:STUDENTS为表
类:Students.java
一、HQL检索是面向对象的,由Hibernate对其解析,然后根据对象-关系的映射信息来翻译成相应的SQL语句。HQL查询语句的主体是域模型中的类及类的属性。如Students持久化类名字,sname持久化类的属性名字。session.createQuery()
public void hqlRetrieval(){ Session session=sessionFactory.openSession(); Transaction tx=session.beginTransaction(); Query query=session.createQuery("from Students where sname like ?"); query.setString(0, "Tom%"); List queryList=query.list(); /* Query query2=session.createQuery("from Students where sname like :snamepar"); query2.setParameter("snamepar","Tom%"); List queryList2=query2.list(); long sidpar=20; Query q3=session.createQuery("from Students where sname like :snamepar and sid>:sidpar"); q3.setParameter("sidpar",sidpar); q3.setParameter("snamepar","Tom%"); List queryList3=query3.list(); */ Iterator it=queryList.iterator(); while(it.hasNext()){ Students stud=(Students)it.next(); System.out.println(stud.getSid()+" "+stud.getSname()+" "+stud.getSsex()); } tx.commit(); session.close(); }
二、本地SQL检索方式,用sql语句查询,以对象数组进行存储。 session.createSQLQuery()
有的应用程序需要根据底层数据库的SQL方言,来生成一些特殊的查询语句。
public void sqlRetrieval(){ Session session=sessionFactory.openSession(); Transaction tx=session.beginTransaction(); Query query=session.createSQLQuery("select * from STUDENTS where sname like :newName"); query.setString("newName", "Tom%"); List queryList=query.list(); for(Iterator it=queryList.iterator();it.hasNext();){ Object[] obj=(Object[])it.next(); for(int i=0;i<obj.length;i++){ System.out.println(obj[i]); } } tx.commit(); session.close(); }
使用addEntity()方法将SQL表的别名和实体类联系起来,并且确定查询结果集的形态
public void sqlTohqlRetrieval(){ Session session=sessionFactory.openSession(); Transaction tx=session.beginTransaction(); Query query=session.createSQLQuery("select * from STUDENTS where sname like :newName") .addEntity(Students.class); query.setString("newName", "Tom%"); List queryList=query.list(); for(Iterator it=queryList.iterator();it.hasNext();){ Students stud=(Students)it.next(); System.out.println(stud.getSid()+" "+stud.getSname()+" "+stud.getSsex()); } tx.commit(); session.close(); }
三、QBC检索,支持在运行时动态生成查询语句,由Criteria接口,Criterion接口和Restrictions类组成
public void qbcRetrieval(){ Session session=sessionFactory.openSession(); Transaction tx=session.beginTransaction(); Criteria criteria=session.createCriteria(Students.class); Criterion con1=Restrictions.like("sname", "Tom%"); Criterion con2=Restrictions.gt("sid",new Long(6)); criteria=criteria.add(con1); criteria=criteria.add(con2); List resultList=criteria.list(); // List resultList2=session.createCriteria(Students.class) // .add(Restrictions.like("sname", "Tom%")) // .add(Restrictions.gt("sid", new Long(6))) // .list(); Iterator it=resultList.iterator(); while(it.hasNext()){ Students stud=(Students)it.next(); System.out.println(stud.getSname()+" "+stud.getSsex()); } tx.commit(); session.close(); }
1、调用Session的CreateCriteria()方法创建一个Criteria对象
2、设定查询条件。Restrictions设定查询条件的静态方法,并返回Ctriterion实例,每个实例代表一个查询条件,利用add()方法加入
3、调用Criteria的List()方法执行查询语句.
------------ 初始学习Hibernate的检索方式,并记录,以便温故 -------------
相关文章推荐
- Qt 之 运行Qt Creator出现cannot find -lGL的问题的两种解决
- 为了我那忘却的记忆而做的笔记
- 环信即时通讯 —— IOS客户端集成
- iOS学习 - 应用程序管理
- U3D学习笔记(5)
- linux 文件编码
- Find Minimum in Rotated Sorted Array
- xsd 生成 java类
- SpringMVC返回值的几种方式
- DB2存储过程实现查询表数据,生成动态SQL,并执行
- httpClenit的post出现乱码问题
- Android Eclipse Ant 编译打包
- javascript中html字符串转化为jquery dom对象的方法
- ubuntu下wifi连接无线路由的脚本
- Submission of camera-ready papers
- HDU 5157 Harry and magic string(Manacher)
- 从零开始学 iOS 开发的15条建议
- 深入理解Loadrunner中的Browser Emulation
- C# 获取指定目录下所有文件信息、删除文件、目录,移动目录,拷贝目录
- HDOJ 2602 Bone Collector--01背包