hibernate-懒加载

/**
 * 懒加载
 *    针对数据库中的大数据,不希望特别早的加载到内存中,当用到它的时候才加载
 *    类的懒加载
 *    集合的懒加载    
 *    单端关联的懒加载
 * @author Administrator
 *
 */
public class LazyTest {
	private static SessionFactory sessionFactory;
	static{
		Configuration configuration = new Configuration();
		//加载配置文件
		configuration.configure("cn/itcast/hibernate0909/onetomany/doubl/hibernate.cfg.xml");
		//采用了工厂模式创建sessionFactory
		sessionFactory = configuration.buildSessionFactory();
	}
	/**
	 * 类的懒加载
	 *    *  在默认情况下,类就是执行懒加载
	 *    *  只有使用了load方法以后才能用懒加载
	 *    *  如果在相应的映射文件中,设置<class>的lazy="false"懒加载将失去效果
	 */
	@Test
	public void testLoad(){
		Session session = sessionFactory.getCurrentSession();
		Transaction transaction = session.beginTransaction();
		Classes classes = (Classes)session.load(Classes.class, 1L);
		String cname = classes.getCname();//发出sql语句
		System.out.println(cname);
		transaction.commit();
		//session.close();
	}
	
	/**
	 * 集合的懒加载
	 *   针对一多对的情况或者多对多的情况
	 *     根据一方加载set集合,决定在什么时候给set集合填充数据
	 *     true
	 *        在遍历集合中的每一个元素的时候发出sql语句
	 *     false
	 *        在得到集合的时候,发出sql语句
	 *     extra
	 *        students.size()这个时候用extra仅仅能够得到大小
	 */
	@Test
	public void testCollectionLazy(){
		Session session = sessionFactory.openSession();
		Classes classes = (Classes)session.load(Classes.class, 2L);
		Set<Student> students = classes.getStudents();
		System.out.println(students.size());
		session.close();
	}
	
	/**
	 * 单端关联
	 *   根据多的一方加载一的一方
	 *     false
	 *     proxy  就相当于true
	 *     no-proxy
	 *      根据多的一方加载一的一方数据量特别少,所以怎么样都行
	 */
	
}

、、



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值