hibernate get VS load

1.  执行get方法:会立即加载对象

     而执行load方法,若不适用该对象,则不会立即执行查询操作,而返回一个代理对象

     get立即检索,load延迟检索 

2.  load方法可能抛出懒加载异常:LazyInitializationException

     在需要初始化代理对象之前,已经关闭了Session

3. 若数据库表中没有数据,且Session也没有被关闭,同时需要使用对象时

    get:返回null

    load:若不使用该对象的任何属性,没有问题;若需要初始化,抛出异常

 

  

时间: 2024-08-02 02:59:31

hibernate get VS load的相关文章

Hibernate get和load区别(转)

get和load方式是根据id取得一个记录下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来. 1.从返回结果上对比:load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常get方法检索不到的话会返回null 2.从检索执行机制上对比: get方法和find方法都是直接从数据库中检索 而load方法的执行则比较复杂首先查找session的persistent Context中是否有缓存,如果有则直接返回 如果没有则

hibernate get和load的区别

区别主要有三点: 1,load返回的是代理对象,等到真正使用对象的内容时才会发出sql语句. 2,get直接从数据库加载,不会延迟. 3,不存在对应记录时表现不一样. 无论是get还是load,都会首先查找缓存(一级缓存),如果没有才会去数据库查找.调用clear()方法可以清除session缓存,调用flush()方法可以强制进行从内存到数据库的同步. 具体分析如下: 在hibernate中我们知道如果要从数据库中得到一个对象,通常有两种方式,一种是通过session.get()方法,另一种就

Hibernate中使用load和get加载的区别

一. Hibernate使用load机制和使用get加载的区别(重点) 1.相同点:get 和load他们都可以通过指定的实体类与ID从数据库中读取数据,并返回对应的实例 2. 不同点:如果找不到符合条件的纪录,get()方法将返回null.而load()将会报出ObjectNotFoundEcception. 2.1get 是直接从数据库中检索   而load会使用懒加载(延迟加载)产生一个代理对象,属性oid 2.2 使用load加载,Hibernate会认为该id对应的对象是一定存在的,所

Hibernate get 和load的区别

1 load是要用的时候才从数据库去查询,get 是马上查询. 2 对于不存在的记录,get会报空指针异常,load会报 org.hibernate.ObjectNotFoundException: No row with the given identifier exists 使用load时,此时的user对象是一个代理对象,仅仅保存了当前的这个id值,当我们试图得到该对象的username属性时,这个属性其实是不存在的,所以就会报出ObjectNotFoundException这个异常了.

力所能及之Hibernate中get(),load()区别

get和load的区别: * get不支持延迟加载,而load支持. * 当查询特定的数据库中不存在的数据时,get会返回null,而load则抛出异常. 从返回结果上对比 load 方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常 get 方法检索不到的话会返回null 从检索机制上对比:get方法直接从数据库中检索,而load方法的执行则比较复杂,首先查找session的persistent Context中是否有缓存, 如果有则直接返回,

Hibernate 的 session.load()使用方法

protected Person getOne(int id){ Session session = HibernateSessionFactory.getSession(); Person person = new Person(); try{ session.load(person, id); }catch(Exception e){ e.printStackTrace(); }finally{ session.close(); } return person; }

Hibernate中get方法和load方法的区别

1.从返回结果上对比: load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常: get方法检索不到的话会返回null: 2.从检索执行机制上对比: load方法的执行则比较复杂首先查找session的persistent Context(一级缓存)中是否有缓存,如果有则直接返回,如果没有则去查找二级缓存,如果有则返回,如果没有则判断是否是lazy,若不是lazy,直接访问数据库检索,查到记录返回(并且同时在二级缓存中存放查到的数据方便下次使

hibernate session中的load与get

一.get不支持lazy,load支持lazy. 二.采用get加载数据,如果没有匹配的数据,返回null,而load则抛出异常. 三.执行load()时,先从Session查找当前的对象是否存在,如果不存在,则从数据库中去查询,如果不存在这条记录,则扔异常:执行get()的时候,不论Session中是否存在当前对象,直接从数据库中去查询,如果不存在,则返回null. 四.load()方法可以返回实体的代理类实例,而get()永远只返回实体类. get的例子: public void testG

Hibernate框架之get和load方法的区别

我们在学习Hibernate框架时,经常会进行修改,删除操作,对于这些操作,我们都应该先加载对象,然后在执行或删除的操作,那么这里Hibernate提供了两种方法按照主键加载对象,也就是我要说的get和load这两个方法. 我们都知道这两个方法都能够去加载对象,但是他们之间的区别我们必须要去了解一下,这可能也会成为面试的重点.下面我们 主要分析一下get和load这两个方法的区别: 一.Load加载方式和get加载对象方式的区别: 1.load加载方式: Hibernate在使用Load方法获取