代码改变世界

序列化和持久化 merge方法和saveOrUpdate方法

2016-08-06 18:49  你不在的日子  阅读(397)  评论(0编辑  收藏  举报

merge方法和saveOrUpdate方法的区别

merge方法是把我们提供的对象转变为托管状态的对象;而saveOrUpdate则是把我们提供的对象变成一个持久化对象;说的通俗一点就是:saveOrUpdate后的对象会纳入session的管理,对象的状态会跟数据库同步,再次查询该对象会直接从session中取,merge后的对 象不会纳入session的管理,再次查询该对象还是会从数据库中取。

使用merge方法修改时如果两次修改的值没有变,它只会执行select而不会进行update。

序列化和持久化

  • 序列化: 将数据结构或对象转换成二进制串的过程
  • 持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。
  • 持久化,是一种对象服务,就是把内存中的对象保存到外存中,让以后能够取回。它是数据格式转换。需要实现三个接口:

    void Save(object o) 把一个对象保存到外存中   

    Object Load(object oid) 通过对象标识从外存中取回对象   

    bool Exists(object oid) 检查外存中是否存在某个对象

    序列化,序列化也是一种对象服务,就是把内存中的对象序列化成流、或者把流反序列化成对象。需要实现2个接口:   

    void Serialize(Stream stream,object o) 把对象序列化到流中   

    object Deserialize(Stream stream) 把流反序列化成对象

  • 所有的持久化都是基于序列化