get方法何时命中数据库?

时间:2017-04-20 12:40:00

标签: hibernate

我正在尝试学习get和load之间的区别。我的代码示例是这个---

public class StudentTest {
    public static void main(String[] args) {
        SessionFactory sessionfactory=new Configuration().configure().buildSessionFactory();
        Session session=sessionfactory.openSession();

        Student student=new Student();
        student.setName("Rajat");
        student.setDate(new Date());
        student.setCompany("Yash");

        session.persist(student);

        Transaction t1=session.beginTransaction();
        session.getTransaction().commit();

        student.setName("Prashant");

        Student getStudent1=(Student)session.get(Student.class, 1);
        System.out.println("-----------get------------------");
        System.out.println(getStudent1);


        session.close();
        sessionfactory.close();
    }

如果点击数据库为什么?输出是

Student [id=1, name=Prashant, company=Yash, date=Thu Apr 20 17:22:20 IST 2017]

在数据库中,它将名称保存为Rajat。

1 个答案:

答案 0 :(得分:0)

直接从数据库中加载对象,因此在执行get时,您将在日志中看到select sql。

Load为请求的集合提供代理,每当您实际使用请求的集合时,将执行sql将获取该集合