eclipse
//注意这些操作都是在debug模式下才会出现这样的不同
1.eclipse中的测试结果:
涉及到的问题:hibernate框架的Session方法的load方法和get方法的加载模式
a.get方法:立即
这是工具类
package com.DenisDLF.hibernate.utils;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static SessionFactory sessionFactory;
static{
Configuration configure = new Configuration().configure();
sessionFactory = configure.buildSessionFactory();
}
public static Session openSession(){
return sessionFactory.openSession();
}
}
测试方法
@Test
public void query(){
//获取与数据库的连接
Session session = HibernateUtil.openSession();
//System.out.println(session);
//通过连接来获取查询对象
//缺少提交
Transaction transaction = session.beginTransaction();
//获取该对象
Customer customer = session.load(Customer.class, 1L);
//Customer customer = session.get(Customer.class , 1L);//发送语句
//输出查询对象
System.out.println(customer.getCust_id());
//释放资源
transaction.commit();
session.close();
}
得到的结果:
a.get方法:
a.为立即加载
b.load方法:
a.为及时加载,当执行到指定的获取数据库资源的时候, 并没有发送sql语句,而是当你请求资源(除了你请求id)之外的其他属性的时候才会发送sql语句,获取数据库的资源,这种加载方式为lazy加载方式
b.返回的代理对象。javassist-3.18.1-GA.jar 利用javassist技术产生的代理
IDEA
//注意这些操作都是在debug模式下才会出现这样的不同
-
IDEA中的测试如下:
没有出现lazy加载方式和及时加载,而是当你执行到该语句的时候就会马上加载你需要获得的数据,存储在指定对象中,而不需要当你调用的时候才,为你加载该对象