hibernate的持久化的API

Hibernate对象的状态有以下四种:


1)瞬时状态
也就是实体对象处于new的状态。它是在session缓存区中不存在的,也不会跟session有关联,更不会跟数据库有关联

2)持久状态
持久状态最重要的。当你用save(),load(),get(),update(),list,iterater,scroll,saveOrUpdate方法时,都会变成持久状态,会把对象放在session缓存区中。当session进行缓存区清理的时候,也就是commit的时候,会把数据与数据库进行同步。
3)移除状态
用remove(),delete就会从持久状态变成移除状态,移除状态的对象还是存在缓存区中的,只是数据库中不再有此对象,不再和它关联,一旦session关闭,这个对象也就没有意义了

4)游离状态

当session关闭后,存在session缓存区中的对象就变成了游离状态 。他们还是可以访问各自的数据,但是他们不在和数据库关联起来, 他们只是曾经与session有过联系,而最后被抛弃的东西, 而他们拥有对象标识符。







这里介绍第一种Session提供的方法,其中增、删、改都是根据id来进行操作的。


一、增:save方法:

Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction ts = session.getTransaction();
		ts.begin();
		try {
			Student student = new Student();
			student.setId(3);// 已设为自动增长序列,手动指定被忽略
			student.setName("李四");
			student.setSex("男");
			session.save(student);
			ts.commit();
		} catch (Exception e) {
			ts.rollback();
		} finally {
			session.close();
		}

需要注意的是,如果已设置了主键生成策略,那么手动指定主键值会被忽略。

二、改 update方法:

Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction ts = session.getTransaction();
		ts.begin();
		try {
			Student student = new Student();
			student.setId(25);// 已设为自动增长序列,手动指定被忽略
			student.setName("李四1");
			student.setSex("女");
			session.update(student);
			ts.commit();
		} catch (Exception e) {
			ts.rollback();
		} finally {
			session.close();
		}
注意,若直接对持久化状态的对象(即在数据库中已经存在)进行修改,当事务提交的时候,若系统检测到和数据库中的不一样,会自动发起update语句。如下面的和上面效果是一样的:

Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction ts = session.getTransaction();
		ts.begin();
		try {
			Student student = (Student) session.get(Student.class, 24);
			//student.setId(24);// 已设为自动增长序列,手动指定被忽略
			student.setName("李四");
			student.setSex("男");
			//session.update(student);
			ts.commit();
		} catch (Exception e) {
			ts.rollback();
		} finally {
			session.close();
		}

注:saveOrUpdate()方法:增或改,判断id是否存在,存在则改,不存在则增。

1、如果id已配置主键生成策略,判断id是否指定,指定则是更新,否则为插入;

2、如何id不是自动生成而是人工指定,判断id是否在数据库中存在,存在则为update,否则为save。

三、删 delete方法:

是根据id来删除的,如

Student student = new Student();
			
			student.setName("李四");
			session.delete(student);
			ts.commit();
是删不掉的,必须有明确的id。

四、查 get方法

load方法和get方法非常相似,不同在于,查不到的话。get会返回null,而load会抛出异常。

内容概要:本文详细介绍了基于FPGA的144输出通道可切换电压源系统的设计与实现,涵盖系统总体架构、FPGA硬件设计、上位机软件设计以及系统集成方案。系统由上位机控制软件(PC端)、FPGA控制核心和高压输出模块(144通道)三部分组成。FPGA硬件设计部分详细描述了Verilog代码实现,包括PWM生成模块、UART通信模块和温度监控模块。硬件设计说明中提及了FPGA选型、PWM生成方式、通信接口、高压输出模块和保护电路的设计要点。上位机软件采用Python编写,实现了设备连接、命令发送、序列控制等功能,并提供了一个图形用户界面(GUI)用于方便的操作和配置。 适合人群:具备一定硬件设计和编程基础的电子工程师、FPGA开发者及科研人员。 使用场景及目标:①适用于需要精确控制多通道电压输出的实验环境或工业应用场景;②帮助用户理解和掌握FPGA在复杂控制系统中的应用,包括PWM控制、UART通信及多通道信号处理;③为研究人员提供一个可扩展的平台,用于测试和验证不同的电压源控制算法和策略。 阅读建议:由于涉及硬件和软件两方面的内容,建议读者先熟悉FPGA基础知识和Verilog语言,同时具备一定的Python编程经验。在阅读过程中,应结合硬件电路图和代码注释,逐步理解系统的各个组成部分及其相互关系。此外,实际动手搭建和调试该系统将有助于加深对整个设计的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

w_t_y_y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值