Session.load()

 

 1。load一条不存在的记录
    Employee employee2 = (Employee) session.load(Employee.class, new Integer(100));
        会抛出net.sf.hibernate.ObjectNotFoundException。
    如果不想抛出该Exception, 应该使用session.get(Class clazz, Serializable id);

2. load一条数据库存在的记录
    1)如果session的Cache中存在,那么直接返回该引用。
    Session session = HibernateSessionFactory.currentSession();
        Transaction tx = session.beginTransaction();
        Employee employee1 = new Employee();
        employee1.setAge((byte)10);
        employee1.setBirthDay(new Date());
        employee1.setEmployeeName("HairRoot");
        employee1.setGender('m');
        employee1.setMarried(false);
        session.save(employee1);
        System.out.println(employee1);
       
        //employ1 已经被保存
    Employee employee2 = (Employee) session.load(Employee.class, new Integer(/*employee1.getId()*/100));
        System.out.println(employee2);
        tx.commit();
        session.close();

        可以发现employee1和employee2是同一个引用。打开show_sql=true也会发现,hibernate并没有发送一条select语句给数据库。

    2)如果session的Cache中不存在,那么会立即发送一条select。
        Session session = HibernateSessionFactory.currentSession();
        Transaction tx = session.beginTransaction();
        Employee employee = (Employee) session.load(Employee.class, new Integer(100));
        System.out.println(employee);
        tx.commit();
        session.close();

        后台:Hibernate: select employee0_.id as id0_, employee0_.age as age0_, employee0_.birthDay as birthDay0_, employee0_.employeeName as employee4_0_, employee0_.gender as gender0_, employee0_.married as married0_ from MWS_TEST_EMPLOYEE employee0_ where employee0_.id=?

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值