日期:2014-05-17  浏览次数:20614 次

hibernate 查询方法
我想请问下hibernate 哪种查询方法好啊,官网的是那种, 企业最常用的是哪种,有代码最好,
Hibernate 企业

------解决方案--------------------
具体问题具体分析,效率高就行
------解决方案--------------------
要么QBC要么HQL咯
------解决方案--------------------
从hibernate设计的思想来说用HQL,hibernate就是将对象与数据库表关联起来的,从编程这个角度来看,都应该是对象,但是考虑效率原因,个人感觉还是hql好一点
------解决方案--------------------
Hibernate的hql极大方便了程序的编写,更灵活的用法,同时也符合面向对象的准则。但是Hibernate还是存在自己不的不足之处。做批量处理时,建议还是用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();
  }
 }

适用情况:常用方法,比较传统,类似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());