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

xiaoxiao2026-08-20  8

Configuration cfg = new Configuration().configure(); SessionFactory sf = cfg.buildSessionFactory(); Session session = sf.openSession(); Transaction tr = session.beginTransaction(); Pet pet = (Pet) session.load(Pet.class, 3); Configuration cfg = new Configuration().configure(); SessionFactory sf = cfg.buildSessionFactory(); Session session = sf.openSession(); Transaction tr = session.beginTransaction(); Pet pet = (Pet) session.get(Pet.class, 3);

 

 /** get:   * 控制台有select语句   * 1:用get() 总是会和数据库交互   * 2: pet.getPetName()   * 如果此对象不存在访问其属性则抛出:java.lang.NullPointerException 异常

   */

 /** load:   * 2: pet.getPetName()   * 如果此对象不存在访问其属性则抛出:nofoundClass异常

   */

 

1: Load方法可返回实体的代理类实例,而get方法永远直接返回实体类。 2:load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用SQL完成数据读取

 

效率上肯定是load 更高

相关资源:敏捷开发V1.0.pptx
转载请注明原文地址: https://www.6miu.com/read-5051562.html

最新回复(0)