@Test
public void testLoad() {
Session session = sf.getCurrentSession();
session.beginTransaction();
Teacher t = (Teacher)session.load(Teacher.class, 6);
System.out.println(t.getId());
session.getTransaction().commit(); }
当数据库中没有ID为6的记录时,和有ID为6的记录时 ,各有什么结果?
我感觉我的出问题了,不管有没有这条记录,都会打印 6,而且看不到hibernate的执行语句。

解决方案 »

  1.   

    1.get()采用立即加载方式,而load()采用延迟加载;
                    get()方法执行的时候,会立即向数据库发出查询语句,
                   而load()方法返回的是一个代理(此代理中只有一个id属性),只有等真正使用该对象属性的时候,才会发出sql语句
          2.如果数据库中没有对应的记录,get()方法返回的是null.而load()方法出现异常ObjectNotFoundException
      

  2.   


    load()方法返回的是一个代理(此代理中只有一个id属性),只有等真正使用该对象属性的时候,才会发出sql语句
      

  3.   

    你把取出来的对象在控制台输出一下就会有sql语句产生