您的位置:首页 > 其它

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

2017-03-18 10:10 239 查看

回忆

在上一篇播客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接口,在后续记录中会讲解他的常用方法,以及如何进行分页查询等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐