Session session = sessionFactory.openSession(); User user1 = (User) session.load(User.class, new Integer(1)); User user2 = (User) session.load(User.class, new Integer(1)); System.out.println(user1 == user2); session.close();第二次查询数据时,由于在快取中找到数据对象,于是直接返回,这与第一次查询到的数据对象是同一个实例,所以会显示true的结果。
Session session = sessionFactory.openSession();
      User user1 = (User) session.load(User.class, new Integer(1));
      session.evict(user1);
      User user2 = (User) session.load(User.class, new Integer(1));
      System.out.println(user1 == user2);
      session.close();
        由于user1所参考的对象被从快取中移去了,在下一次查询时,Session在Map容器中找不到对应的数据,于是重新查询数据库并再封装一个对象,所以user1与user2参考的是不同的对象,结果会显示false。Session session = sessionFactory.openSession();
      User user1 = (User) session.load(User.class, new Integer(1));
      session.clear();
      User user2 = (User) session.load(User.class, new Integer(1));
      System.out.println(user1 == user2);
      session.close();
    同样的道理,这次也会显示false。Session session1 = sessionFactory.openSession(); 
      User user1 = (User) session1.load(User.class, new new Integer(1)); 
      session1.close(); 
      Session session2 =sessionFactory.openSession();
      User user2 = (User)session2.load(User.class, new Integer(1)); 
      session2.close(); 
      System.out.println(user1 == user2);
    第一个Session在关闭后,快取也关闭了,在第二个Session的查询中并无法用到第一个Session的快取,两个Session阶段所查询到的并不是同一个对象,结果会显示false。Session session = sessionFactory.openSession();
      Transaction tx = session.beginTransaction();
      while(....) { // 大量加载对象时的循环示意
          ....
          session.save(someObject);
          if(count % 100 == 0) { // 每100笔资料
              session.flush(); // 送入数据库
              session.clear(); // 清除快取
          }
      }
      tx.commit();
      session.close();
    在SQL Server、Oracle等数据库中,可以在Hibernate设定文件中设定属性hibernate.jdbc.batch_size来控制每多少笔数据就送至数据库,例如:....
      <hibernate-configuration>
          <session-factory>
              ....
              <property name="hibernate.jdbc.batch_size">100</property>
              ....
          </session-factory>
      <hibernate-configuration>
    
    在MySQL中则不支持这个功能。