1.hibernate查询的6种方法。
分别是HQL查询,对象化查询Criteria方法,动态查询DetachedCriteria,例子查询,sql查询,命名查询。
如果单纯的使用hibernate查询数据库只需要懂其中的一项就可以完成想要实现的一般功能,但是
从一个点,让我们掌握6中方法,则提供了更多选择。每一种方法都有其适用的情况与前提。
HQL查询
HQL是hibernate自己的一套查询语言,于SQL语法不同,具有跨数据库的优点。示例代码:
static
void
query(String name){
Session s = null ;
try {
s = HibernateUtil.getSession();
// from后面是对象,不是表名
String hql = " from Admin as admin where admin.aname=:name " ; // 使用命名参数,推荐使用,易读。
Query query = s.createQuery(hql);
query.setString( " name " , name);
List < Admin > list = query.list();
for (Admin admin:list){
System.out.println(admin.getAname());
}
} finally {
if (s != null )
s.close();
}
}
Session s = null ;
try {
s = HibernateUtil.getSession();
// from后面是对象,不是表名
String hql = " from Admin as admin where admin.aname=:name " ; // 使用命名参数,推荐使用,易读。
Query query = s.createQuery(hql);
query.setString( " name " , name);
List < Admin > list = query.list();
for (Admin admin:list){
System.out.println(admin.getAname());
}
} finally {
if (s != null )
s.close();
}
}
适用情况:常用方法,比较传统,类似jdbc。缺点:新的查询语言,适用面有限,仅适用于Hibernate框架。
对象化查询Criteria方法:
static
void
cri(String name,String password){
Session s = null ;
try {
s = HibernateUtil.getSession();
Criteria c = s.createCriteria(Admin. class );
c.add(Restrictions.eq( " aname " ,name)); // eq是等于,gt是大于,lt是小于,or是或
c.add(Restrictions.eq( " apassword " , password));
List < Admin > list = c.list();
for (Admin admin:list){
System.out.println(admin.getAname());
}
} finally {
if (s != null )
s.close();
}
}
Session s = null ;
try {
s = HibernateUtil.getSession();
Criteria c = s.createCriteria(Admin. class );
c.add(Restrictions.eq( " aname " ,name)); // eq是等于,gt是大于,lt是小于,or是或
c.add(Restrictions.eq( " apassword " , password));
List < Admin > list = c.list();
for (Admin admin:list){
System.out.println(admin.getAname());
}
} finally {
if (s != null )
s.close();
}
}
适用情况:面向对象操作,革新了以前的数据库操作方式,易读。缺点:适用面较HQL有限。
动态分离查询DetachedCriteria
static
List dc(DetachedCriteria dc) {
Session s = HibernateUtil.getSession();
Criteria c = dc.getExecutableCriteria(s);
List rs = c.list();
s.close();
return rs;
}
Session s = HibernateUtil.getSession();
Criteria c = dc.getExecutableCriteria(s);
List rs = c.list();
s.close();
return rs;
}