当前位置: 首页 > 编程笔记 >

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

戚勇
2023-03-14
本文向大家介绍Hibernate中get()和load()之间的区别,包括了Hibernate中get()和load()之间的区别的使用技巧和注意事项,需要的朋友参考一下

在休眠模式下,get()andload()是两种用于获取给定标识符的数据的方法。它们都属于Hibernate会话类。Get()如果给定标识符的会话高速html" target="_blank">缓存或数据库中没有可用的行,则方法返回null,而load()方法抛出未找到对象的异常。 

序号

得到()
加载()

1

基本的 

它用于从数据库中获取给定标识符的数据  

它还用于从数据库中获取给定标识符的数据 

2

空对象 

找不到给定标识符的对象,则它将返回null对象 

它将抛出未找到对象的异常 

3


延迟加载 

它返回完全初始化的对象,因此该方法渴望加载对象  

它总是返回代理对象,因此此方法是延迟加载对象  

4

性能 

比它慢,load()因为它返回完全初始化的对象,这会影响应用程序的性能 

它稍微快一点。

5,

用例

如果不确定对象是否存在,请使用get()方法 

如果您确定对象存在,则使用load()方法 

Get()Hibernate中的示例

@Entity
public class User {
   @Id
   Integer id;
   String name;
   public Integer getId() {
      return id;
   }
   public void setId(Integer id) {
      this.id = id;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
}
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import com.journaldev.hibernate.util.HibernateUtil;
public class GetExample {
   public static void main(String[] args) {
      //获取会话工厂以开始事务
      SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
      Session session = sessionFactory.openSession();
      Transaction tx = session.beginTransaction();
      //获取示例
      User user = (User) session.get(User.class, new Integer(2));
      System.out.println("User ID= "+user.getId());
      System.out.println("User Name= "+user.getName());
      //关闭资源
      tx.commit();
      sessionFactory.close();
   }
}

Load()Hibernate中的示例

@Entity
public class User {
   @Id
   Integer id;
   String name;
   public Integer getId() {
      return id;
   }
   public void setId(Integer id) {
      this.id = id;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
}
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import com.journaldev.hibernate.util.HibernateUtil;
public class LoadExample {
   public static void main(String[] args) {
      //获取会话工厂以开始事务
      SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
      Session session = sessionFactory.openSession();
      Transaction tx = session.beginTransaction();
      //加载示例
      User user = (User) session.load(User.class, new Integer(2));
      System.out.println("User ID= "+user.getId());
      System.out.println("User Name= "+user.getName());  
      //关闭资源
      tx.commit();
      sessionFactory.close();
   }
}
 类似资料:
  • 问题内容: 和和有什么区别? 在哪个条件下使用哪个更好? 问题答案: 是最可配置的,您可以在其中对HTTP标头等进行精细控制。您还可以使用此方法直接访问XHR对象。还提供了更细粒度的错误处理。因此可能会更复杂并且通常没有必要,但有时非常有用。您必须自己通过回调处理返回的数据。 只是它的简写,但抽象了一些配置,为隐藏的内容设置了合理的默认值。将数据返回给回调。它仅允许GET请求,因此附有类似抽象的功

  • 本文向大家介绍get()和 load()的区别?相关面试题,主要包含被问及get()和 load()的区别?时的应答技巧和注意事项,需要的朋友参考一下 数据查询时,没有 OID 指定的对象,get() 返回 null;load() 返回一个代理对象。 load()支持延迟加载;get() 不支持延迟加载。

  • 问题内容: 和事件有什么区别? 问题答案: 从Mozilla开发人员中心: 当文档已完全加载和解析时,将触发DOMContentLoaded事件,而无需等待样式表,图像和子帧完成加载(可以使用load事件来检测完全加载的页面)。

  • 问题内容: 这两个电话真的有区别吗?如果使用getJSON,则仍然必须在url中声明… 您可以在中执行相同的操作,并遍历JSON对象。 还是我要离开这里? 问题答案: 以下两个片段是等效的: 说一个请求是针对两件事: jQuery发送标头 jQuery解释入站响应,将其转换为JavaScript对象,然后将其传递给回调(因此您不必弄乱eval或其他转换机制)。 许多服务器端框架(例如Rails)会

  • 问题内容: 但没人回答我的下一个问题。经典的hibernate方法使用和JPA 实现之间有什么区别?我听说此JPA实现使用并像包装器一样工作,这是真的吗? 问题答案: 确实。 JPA只是一个API,允许您从使用的持久层中进行抽象。Hibernate提供了充当接口的实现,它使用与Hibernate 相同的基础方法。 这个想法是,例如,您可以将实现切换到Eclipse Link,而不必更改任何源代码。

  • 本文向大家介绍JDBC和Hibernate之间的区别,包括了JDBC和Hibernate之间的区别的使用技巧和注意事项,需要的朋友参考一下 JDBC是Java数据库连接的首字母缩写。它用于将您的应用程序连接到数据库和事务。它是一个开源Java api。   Hibernate还用于将您的应用程序连接到数据库并执行与数据库相关的事务,但是使用不同的方法。它有一个对象关系库,该库将java的对象映射到