下面的例子是说明如何来查询一个对象。 get方法(get方法一经调用,会立即发出get方法)
package com.ahuzl.hibernate;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.Transaction;
import junit.framework.TestCase;
public class SessionTest extends TestCase {
public void testReadByGetMethod2(){
Session session = null;
User user = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
//get方法需要两个参数,一个是被查询的对象(需要是Class类型),一个是序列化接口(也就是表中的主键,在这个例子中就是id)
user = (User)session.get(User.class, "40288184246bdc7501246bdc77280001");
System.out.println("username:"+user.getName());
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally{
if (session != null){
if (session.isOpen()){
session.close();
}
}
}
}
}
load方法 (load方法有延迟加载的特性,即被查询到的对象在使用时才会发出SQL语句)
package com.ahuzl.hibernate;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.Transaction;
import junit.framework.TestCase;
public class SessionTest extends TestCase {
public void testReadByGetMethod2(){
Session session = null;
User user = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
//load方法于get方法需要的参数相同,
//load方法有延迟加载的特性,即被查询到的对象在使用时才会发出SQL语句
user = (User)session.load(User.class, "40288184246bdc7501246bdc77280001");
System.out.println("username:"+user.getName());
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally{
if (session != null){
if (session.isOpen()){
session.close();
}
}
}
}
}
另外,如果没有查询到数据,get会返回null,而load回返回异常