Hibernate学习笔记---通过load和get方法来查询对象(只能根据主键来查询)

下面的例子是说明如何来查询一个对象。 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回返回异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值