今天第一次用eclipse的jpa tools 生成实体的时候偶然看到了实体上的一个新备注@nameQuery,就去百度看看有什么用,查着查着竟然发现
hibernate查询竟然有6种方法,而@nameQuery就是为其中一种查询方法服务的
以前 也系统化的学过hibernate 但是仅仅 只是记得hibernate的sql 和 hql 最基本的两种查询
默默的心凉了好久,看来以前也是没有真正的理解
为了不断的增加自己的知识,我也需要不断的发现和探索,并不断的发一些文章,记录自己的进步
先把这次的6个方法都列出来,从网上找的资料:
hibernate查询的6种方法。分别是1.HQL查询,2.对象化查询Criteria方法,3.动态查询DetachedCriteria,4.例子查询,5.sql查询,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方法:
<