第一種方式:HQL(Hibernate Query Languge,Hibernate 查詢語言)查詢sql
是一種面向對象的查詢語言,其中沒有表和字段的概念,只有類、對象和屬性的概念,HQL 是應用較爲普遍的方式session
語法:[select/update/delete……] from Entity [where……] [group by……] [having……] [order by……]app
(1).沒使用Spring框架的寫法:框架
使用HQL須要四步ui
獲得Session、編寫HQL語句、建立Query對象(Query接口是HQL 查詢接口。它提供了各類的查詢功能)、執行查詢,獲得結果hibernate
sessionFactory =orm
new Configuration().configure().buildSessionFactory();對象
session = sessionFactory.openSession();接口
String hql = 「from Street」;get
Query query = session.createQuery(hql);
List<Street> list = 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;
}
});