hibernate中Session的get()与load()方法区别

 时间:2026-02-15 02:17:20

1、Session的get()与load()方法都可以根据给定的OID从数据库中加载一个持久化对象。load方法支持延迟加载策略,而get不支持。

hibernate中Session的get()与load()方法区别

2、我们在程序中查看这两个方法的区别:

@Test

        public void testGet() {

                News news = (News) session.get(News.class, 1);

                

                //System.out.println(news);

        }

        

        @Test

        public void testLoad() {

                News news = (News) session.load(News.class, 1);

                

                //System.out.println(news);

        }

hibernate中Session的get()与load()方法区别

3、在session.get方法中,将直接去数据库执行一条select语句,而load方法只有当用到了对象的值才会执行sql语句去查询。

hibernate中Session的get()与load()方法区别

hibernate中Session的get()与load()方法区别

4、现在查看load方法返回的对象是一个代理对象,使用的是延迟加载策略。

hibernate中Session的get()与load()方法区别

5、若数据库表中没有对应的记录时,我们查看程序的执行结果。

get方法返回null值。

load方法会抛出异常。

hibernate中Session的get()与load()方法区别

hibernate中Session的get()与load()方法区别

6、如果在代理对象之前关闭了session,load方法可能会抛出懒加载异常。

hibernate中Session的get()与load()方法区别

  • 学习通怎样提高自己的课程积分
  • 学习通怎样查看课程的任务点完成进度
  • 超星学习通如何参加考试(在线测试)?
  • 学习通怎么新建课程
  • 在学习通上如何创建课程?
  • 热门搜索
    小鸡腿怎么做好吃 成绩不好怎么办 加油的英语怎么说 松露怎么吃 怎么蒸鸡蛋羹 数学不好怎么办 小米5怎么样 静脉曲张怎么预防 水碱怎么去除 何猷君第二个字怎么读