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);

    }

运行

原文地址:https://www.cnblogs.com/qingzhi/p/5817577.html