标签:
一、通用方法的抽取实现
由于hibernate中对增删改查的一切操作都是面向对象的,所以将增删改查抽取成通用方法,以满足不同的表的增删改查操作,简化jdbc代码。
具体例子如下:
二、HQL(Hibernate Query Language)
 
面向对象的查询语句,与sql不同,HQL中的对象名是区分大小写的(除了java类和属性其他部分不区分大小写);HQL中查的是对象而不是和表,并且支持多态;
HQL主要通过Query来操作,QUery的创建方式:
Query q = session.createQuery(hql);
from Person
from User user where user.name = :name
from User user where user.name = :name and user.birthday <:birthday
 
 
sql查的是表,HQL查的是对象!
hibernate一切都是从对象出发,hql就是按照对象来查而不是表
- package cn.itcast.hibernate;  
-   
- import java.util.Date;  
- import java.util.List;  
-   
- import org.hibernate.Query;  
- import org.hibernate.Session;  
-   
- import cn.itcast.hibernate.domain.User;  
-   
- public class QueryTest {  
-   
-       
-     
-     public static void Query(String name){  
-           
-         Session s = null;  
-         try {  
-             s=HIbernateUtil.getSession();  
-             
-             
-             String hql = "from User as user where user.name=?"; 
-             Query query = s.createQuery(hql);  
-             query.setString(0, name);  
-             List<User> list=query.list(); 
-             for(User user:list){  
-                 System.out.print(user.getName());  
-             }  
-               
-             
-             User u= (User)query.uniqueResult();  
-             System.out.print("只有一条数据"+u.getName());  
-         } finally {  
-             if(s!=null){  
-                 s.close();  
-             }  
-         }  
-     }  
-     
-     public static void main(String[] args) {  
-         User user = new User();  
-         user.setName("name");  
-         user.setBirthday(new Date());  
-         HIbernateUtil.add(user);  
-         Query(user.getName());  
-   
-     }  
-   
-       
- }  
 
String hql = "from Users as users where users.name = ?";切记用对象不要用表名
注意这句 users是Users的别名,
User是类名,不能直接使用User.name(不能通过类来访问,就好像你不能通过类名去访问实例变量一样。 
通常会用别名的方式解决,比如 
from Users as users where users.name = ?(别名就好像是test类的一个对象,通过对象就可以访问实例变量) 
当然,仅对一个类进行操作,也可以不借助于别名: 
from Users where name = ‘sdf‘
 
还可以用query.uniqueResult();用来返回单一的查询结果,务必确保查询结果唯一。
 hibernate学习笔记4---HQL、通用方法的抽取实现
标签:
原文地址:http://www.cnblogs.com/tian830937/p/4495816.html