hibernate的入门

前言

如果你面试的公司是要求掌握hibernate的话,那么就一定要了解一级缓存、闪照是什么,因为面试的时候一定会拿这个作为面试题

一、对象的三种状态

1.1、临时状态

临时:就是暂时和某事物有一点交集,但是不是长期的

1.2、持久状态

持久:从一开始到最后一直都在一起的

1.3 游离状态

游离:一开始在一起,最后就分道扬镳

在这里插入图片描述

*二、一级缓存、快照

hibernate一级缓存是session级别的

①hibernate的一级缓存默认打开的
②hibernate的一级缓存使用范围,是session范围,从session创建到session关闭范围
③hibernate的一级缓存中,存储数据必须 持久态数据

hibernate快照机制是内存级别的

三、加载策略

3.1、立即加载

举例子,来一个查询语句。
注意这是用的get
当把输出语句放在commit();和session之后时

//创建hibernate核心类
		Configuration cfg=new Configuration();
		//将核心配置文件,添加到核心类中
		cfg.configure("hibernate.cfg.xml");
		//创建session工厂
		SessionFactory sf = cfg.buildSessionFactory();
		//获取session
		Session session = sf.openSession();
		//开启事物
		Transaction ts=session.beginTransaction();
		User u=new User();
		u.setId(3);

		User us =(User) session.get(User.class, u.getId());

		ts.commit();
		session.clear();
		
		System.out.println(us);

结果图
在这里插入图片描述

3.2 延迟加载

注意这是用的load
当把输出语句放在commit();和session之后时

//创建hibernate核心类
		Configuration cfg=new Configuration();
		//将核心配置文件,添加到核心类中
		cfg.configure("hibernate.cfg.xml");
		//创建session工厂
		SessionFactory sf = cfg.buildSessionFactory();
		//获取session
		Session session = sf.openSession();
		//开启事物
		Transaction ts=session.beginTransaction();
		User u=new User();
		u.setId(3);

		User us =(User) session.load(User.class, u.getId());

		ts.commit();
		session.clear();
		
		System.out.println(us);

效果图
在这里插入图片描述

报错了org.hibernate.LazyInitializationException
懒加载异常,延迟加载异常
试验load时session关闭之后在进行加载,就会出现此异常

四、并发控制

1、悲观锁
2、乐观锁
(之后会细说)
总结:如有不懂评论区逛街!!!!
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值