get()和load()的区别

load()没有使用对象的其他属性的时候,没有SQL  延迟加载

get() :没有使用对象的其他属性的时候,也生成了SQL  立即加载

 

是什么导致了延迟加载

  解析:是因为内存中构建了代理对象。

 

 

load()延迟加载案例:

    Session session;
    Transaction tx;
    
    @After
    public void afterTest(){
        tx.commit();
        HibernateUtil.closeSession();
    }
    
    
    
    @Before
    public void initDate(){
        session=HibernateUtil.getSession();
        tx = session.beginTransaction();
    }
    
    
    @Test
    //延迟加载
    public void loadTest(){
        Student stu = (Student)session.load(Student.class, 1);
    }

 运行

 

    Session session;
    Transaction tx;
    
    @After
    public void afterTest(){
        tx.commit();
        HibernateUtil.closeSession();
    }
    
    
    
    @Before
    public void initDate(){
        session=HibernateUtil.getSession();
        tx = session.beginTransaction();
    }
    
    
    @Test
    //延迟加载
    public void loadTest(){
        Student stu = (Student)session.load(Student.class, 1);
        System.out.println(stu);
    }

运行

 

 

剖析

 

---------------------------------------------------------------------------------------

 

-

---------------------------------------------------------------------------------------

 

 

get()立即加载案例

    Session session;
    Transaction tx;
    
    @After
    public void afterTest(){
        tx.commit();
        HibernateUtil.closeSession();
    }
    
    
    
    @Before
    public void initDate(){
        session=HibernateUtil.getSession();
        tx = session.beginTransaction();
    }

    @Test
    public void getTest(){
        Student stu = (Student)session.get(Student.class, 1);

    }

运行

 

posted on 2016-08-29 12:29  -EASY-  阅读(1590)  评论(0编辑  收藏  举报

导航