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

在休眠模式下,get()andload()是两种用于获取给定标识符的数据的方法。它们都属于Hibernate会话类。Get()如果给定标识符的会话高速缓存或数据库中没有可用的行,则方法返回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();
   }
}