第一种方式:hql(hibernate query languge,hibernate 查询语言)查询
是一种面向对象的查询语言,其中没有表和字段的概念,只有类、对象和属性的概念,hql 是应用较为广泛的方式
语法:[select/update/delete……] from entity [where……] [group by……] [having……] [order by……]
(1).没使用spring框架的写法:
使用hql需要四步
得到session、编写hql语句、创建query对象(query接口是hql 查询接口。它提供了各种的查询功能)、执行查询,得到结果
sessionfactory =
new configuration().configure().buildsessionfactory();
session = sessionfactory.opensession();
string hql = “from street”;
query query = session.createquery(hql);
listlist = query.list();
(2).使用spring框架的写法:
string querystring = "select form entity ....";
list list=gethibernatetemplate().find(querystring);
第二种方式:criteria 查询
criteria 查询采用面向对象方式封装查询条件,又称为对象查询;
就是对sql 语句进行封装,采用对象的方式来组合各种查询条件
由hibernate 自动产生sql 查询语句
(1).没使用spring框架的写法;
criteria由hibernate session进行创建
sessionfactory sessionfactory = new configuration().configure()
.buildsessionfactory();
session session = sessionfactory.opensession();
criteria criteria = session.createcriteria(user.class);
list result = criteria.list();
iterator it = result.iterator();
(2)使用spring框架的写法:
import org.hibernate.criterion.detachedcriteria;
detachedcriteria criteria=detachedcriteria.forclass(objectentity.class);
criteria.add(restrictions.eq("propertyname", propertyvalue));
list result=gethibernatetemplate().findbycriteria(criteria);
第三种方式:使用sql语句查询(以下都是使用了spring框架的写法)
1).这是把执行结果放到了一个类里:(这个类通常使用vo实体,vo实体一般就只用来接收查询结果)
list list = gethibernatetemplate().executefind(new hibernatecallback() {
public object doinhibernate(session session) throws hibernateexception, sqlexception {
stringbuffer hqlbuffer = new stringbuffer("");
hqlbuffer.append("select column_name from ...");//里面是sql语句
sqlquery sqlquery = session.createsqlquery(hqlbuffer.tostring());
sqlquery.addscalar("propertyname",hibernate.string);//该propertyname是 objectvo实体的一个属性
sqlquery.setresulttransformer(transformers.aliastobean(objectvo.class));
list list = sqlquery.list();
return list;//此处list集合中存放的是objectvo对象
}
});
2).返回结果放到list中的:
final string querystring = "";//sql语句
list resultlist=gethibernatetemplate().executefind(new hibernatecallback() {
public list doinhibernate(session session) throws hibernateexception, sqlexception {
sqlquery sqlquery = session.createsqlquery(querystring);
list list=sqlquery.executeupdate();
return list;
}
});
3).无返回结果:
final string querystring = "";//sql语句
gethibernatetemplate().executefind(new hibernatecallback() {
public object doinhibernate(session session) throws hibernateexception, sqlexception {
sqlquery sqlquery = session.createsqlquery(querystring);
sqlquery.executeupdate();
return null;
}
});