如何深入理解hibernate数据持久化?请详细点,通俗易懂点,谢谢!

 我来答
匿名用户
2016-08-31
展开全部
所谓的持久是站在业务模型的角度说的。按照面向对象的分析设计方式,我们先根据业务的形状画出一个对象模型,然后写代码,然后对象之间互相调用,系统就运行起来了。面向对象很牛b,但是有一个巨大的问题,就是所有的对象都是在计算机的内存里的,一旦机器关掉,一切都消失了。于是需要有这样的功能:把内存中的对象保存到数据库里去,需要的时候再从数据库里拿出来。

最简单的方式就是:在对象里面写上sql语句,把对象属性insert/update进去,需要的时候从数据库里面select出数据来,再set到对象属性上。这是最土的办法。这样一来,对象就持久了。

比较炫一点的办法,就是定义一个表,在这个表里记录对象属性和数据库字段的一个对应关系,当我们需要一个对象的时候,就根据这个表自动把对象属性的值赋上,修改后的属性还能自动update回到数据库里去。有了这个功能,对象的使用者就感觉象没有数据库一样,好像这些对象本来就是放在内存中的。这就是orm。

持久化就是把缓存中的东西放到数据库中使之持久.对于需要持久化的对象,它的生命周期分为三个状态:临时状态,持久化状态,游离状态.
临时状态:刚刚用new语句创建,没有被持久化,不处于session的缓存中.处于临时状态的java对象被称为临时对象.
持久化状态:已经被持久化,加入到session的缓存中.处于持久化的java对象被称为持久化对象.
游离状态:已经被持久化,但不处于session的缓存中,处于游离状态的java对象被成为游离对象.
持久化对象的特征:
. 位于一个session事例的缓存中,可以说持久化对象总是被一个session事例关联
. 持久化对象和数据库中的相关记录对应
. Session在清理缓存时,会根据持久化对象的属性变化来同步更新数据库
. Session的save()方法把临时状态变为持久化状态.
. Session的update() ,saveOrUpdate()和lock()方法使游离状态变为持久化状态.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式