`

session.get()和session.load()的区别

阅读更多
get()----不支持LAZY
  1. Useruser=(User)session.get(User.class,"402880d01b9bf210011b9bf2a2ff0001");
当调用上面的方法时,马上发出查询sql,加载User对象
  1. user.setName("龙哥");
persistent状态,当属性发生改变的时候,hibernate会自动和数据库同步
  1. Useruser=(User)session.get(User.class,"asdfsafsdfdsf");
  2. System.out.println("user.name="+user.getName());
采用get加载数据,如果数据库中不存在相应的数据,返回null,它不会抛异常
load()----支持LAZY
  1. Useruser=(User)session.load(User.class,"402880d01b9bf210011b9bf2a2ff0001");
不会发出查询sql,因为load方法实现了lazy(懒加载或延迟加载)
hibernate延迟加载实现原理是代理方式
  1. System.out.println("user.name="+user.getName());

延迟加载:只有真正使用这个对象的时候,才加载(发出sql语句)
  1. user.setName("发哥");
persistent状态,当属性发生改变的时候,hibernate会自动和数据库同步
  1. Useruser=(User)session.load(User.class,"55555555");
  2. System.out.println("user.name="+user.getName());
  3. //采用load加载数据,如果数据库中没有相应的数据
  4. //那么抛出ObjectNotFoundException
综 上所述,使用load和使用get方法都是可以找到相应的对象的,但发出sql语句的时机不一样,get是在调用get方法时就会发出sql语句,而 load在调用load方法时并不会发出sql语句,只有在调用该查询出来的对象的属性时才会发出sql语句,而当找不到结果时,get得出的结果是 null,但并不会抛异常,load则会抛出异常
分享到:
评论

相关推荐

    session的get与load比较

    session的get与load比较

    Hibernate中Session.get()方法和load()方法的详细比较

    今天小编就为大家分享一篇关于Hibernate中Session.get()方法和load()方法的详细比较,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    Hibernate中get()和load()的区别.docx

    Hibernate中根据Id单条查询获取对象的方式有两种,分别是get()和load(),来看一下这两种方式的区别。 1. get() 使用get()来根据ID进行单条查询: User user=session.get(User.class, "1"); 当get()方法被调用的时候...

    hibernate get load区别

    get方法首先查询session缓存,没有的话查询二级缓存,最后查询数据库;反而load方法创建时首先查询session缓存,没有就创建代理,实际使用数据时才查询二级缓存和数据库

    Hibernate 查询方式总结

    说明: load()与get()的区别 请注意如果没有匹配的数据库记录,load()方法可能抛出无法恢复的异常(unrecoverable exception)。 如果类的映射使用了代理(proxy),load()方法会返回一个未初始化的代理,直到你调用该...

    hibernated的线程同步问题

    hibernate数据的并发控制,及hibernate中的session.get()与session.load()方法异同

    Java 面试宝典

    34、String 和 StringBuffer 的区别 ............................................................................... 24 35、如何把一段逗号分割的字符串转换成一个数组? .......................................

    Ajax请求session超时处理流程

    Ajax请求session超时处理流程 java服务器端处理: SessionValidateFilter中修改: if (ServerInfo.isAjax(request)) { request.setAttribute("statusCode", 301); request.setAttribute("message", "Session ...

    Hibernate查询语言HQL.PPT

    2. 通过标识符检索:使用 session.get() 方法或 session.load() 方法根据标识符检索对象。 3. 使用 HQL 检索对象:使用 Hibernate 查询语言 HQL 检索对象。 4. 使用 Hibernate 条件 API:提供了类型安全的面向对象的...

    Hibernate中get和load方法的区别以及close(),clear()、evict()等的区别

    get和load方式是根据id取得一个记录 下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来。 1.从返回结果上对比: load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常 get方法...

    php.ini-development

    session.hash_bits_per_character ; Default Value: 4 ; Development Value: 5 ; Production Value: 5 ; short_open_tag ; Default Value: On ; Development Value: Off ; Production Value: Off ; track_errors ...

    hibernate操作数据库笔记

    注:由于SessionFactory是重量级对象,很耗资源,所以在获取SessionFactory对象时最好用单例模式获取,以确保一个应用中只有一个SessionFactory对象存在和线程安全,由于Session对象 是非线程安全的(尽管创建一个...

    Hiernate里get和load的区别

    Hiernate里get和load的区别: 实体类: public class Book {//省略get和set方法 private Integer id; private String name; private String author; private Double price; } 测试类: @Test public void test01(){ /...

    romfs.2.0.x.gz

    Checkout the example-session.txt file to see what it looks like. Using the Debugger Just type ^C to drop into gdb. There are no symbols in the binaries provided above, but if you build your own your...

    JAVAEE试题(含答案).pdf

    3. Hibernate 框架中 session 的 get() 和 load() 方法不同,get 先到缓存中去查,如果没有就到 DB 中去查,而 load 在默认情况下支持延迟加载。 4. 部署 Servlet 时,在 web.xml 中需要配置 servlet 和 servlet-...

    Java常见面试题208道.docx

    120.get()和 load()的区别? 121.说一下 hibernate 的缓存机制? 122.hibernate 对象有哪些状态? 123.在 hibernate 中 getCurrentSession 和 openSession 的区别是什么? 124.hibernate 实体类必须要有无参构造函数...

    hibernate基础教程

    3、批量存储:session.flush()和session.clear() 二 Hibernate中的二级缓存结构 在Hibernate中使用两极缓存结构,第一级缓存是Session级别的缓存,Session级别的缓存是由Hibernate...

    JAVAEE试题(含答案).docx

    3. Hibernate框架中的session的get()和load()方法:get方法和load方法都是用于从数据库中加载数据,但它们之间存在一定的区别。get方法先到缓存中去查,如果没有就到数据库中去查,而load方法则支持延迟加载。 4. ...

Global site tag (gtag.js) - Google Analytics