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());