SSH学习之Session接口的常用方法

回忆

在上一篇播客SSH学习之Hibernate的第一个程序中介绍了基本的Hibernate框架的开发搭建环境,了解了Hibernate的基本过程。在这一篇里,我要介绍的是我么使用Hibernate框架最为常用的东西:数据库的操作方法。在之前的博客中也介绍了Session接口对数据库操作的一些方法,这里就详细的讲讲这些方法的使用。

对象的三种状态

临时态(或者瞬时态)
  • 实体类对象中标识符没有值(除了assigned指定之外)且和表没有任何关联,没有和session相关联。
  • 与数据库中的记录没有任何关联,也就是没有与其相关联的数据库信息。
  • 与session对象没有任何关系,也就是session没有对他进行任何操作。
持久态
  • 实体类对象标识符有值,并且和session相关联,持久态的对象会自动更新数据库。
  • 处于持久态的实体类对象最大的特征是对其所做的任何更改操作都会更新到数据库中。
托管态(或者游离态)
  • 对象里有标识符值,但是和session却没有关联。
  • 托管态对象一定是有持久态对象转换而来。
  • 对托管态对象所做的所有操作都不会影响到数据库的信息。
三种状态的转换

常用方法

get方法
通过该方法可以获取持久化对象。
  • 书写方式:session.get(类名.class, 标识符)
  • 过程:通过id值在session缓存中查找对象,如果存在就返回,如果不存在就从数据库中加载此对象。
load方法
通过该方法可以获取持久化对象。
  • 书写方式:session.load(类名.class, 标识符)
  • 过程与get方式相同。
get和load的区别
  • 在立即从数据库中加载对象时,如果存在与标识符相对应的记录,则两者均会返回对象,如果不存在,get方式返回null,load方式抛出一个异常。
save方法
通过该方法可以向数据库中保存一个对象,即一条记录。
  • 书写方式:session.save(对象)
  • 在没有将对象和session相关联时,对象的标识符为null。
  • save方法调用时,框架就会为对象指定一个标识符作为主键。
  • save方法只是将对象存入到session的缓存中,并没有保存到数据库。
  • 提交事务时,将会清理session缓存,生成sql语句将对象保存到数据库中。
update方
更改已经存在数据库信息。
  • 书写方式:session.update(对象)
  • 过程:首先需要获取到该对象,然后对其进行更改,再用update方法将其更改。
saveOrUpdate方法
对脱管态对象使用save方法是不对的,对临时态对象使用update方法也不对。saveOrUpdate方法同时兼具两种方法的功能,对于传入的对象首先判断该对象是托管态还是临时态,然后再调用相应的方法。
delete方法
这个方法是用来删除某一个对象的。
  • 书写方式:session.delete(对象)
  • 过程:首先需要获取到该对象,然后对其进行更改,再将其删除。

多余的话

在实际的开发中,我们操作得最多的还是查询操作,所以Hibernate框架又专门提供了另一个接口对数据库进行查询,Query接口,在后续记录中会讲解他的常用方法,以及如何进行分页查询等。
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值