持久化和序列化

一、持久化

持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。

持久化是将程序数据在持久状态和瞬时状态间转换的机制。

JDBC就是一种持久化机制。文件IO也是一种持久化机制。

 

二、序列化

简单说,对象序列化是将对象状态转换为可保持或传输的格式的过程。

什么情况下需要序列化  :   

a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;    

b)当你想用套接字在网络上传送对象的时候;    

c)当你想通过RMI传输对象的时候; 对象要实现序列化,是非常简单的,只需要实现Serializable接口就可以了。

  public class Test implements Serializable

序列化示例代码
 1 using System;
2 using System.IO;
3 using System.Runtime.Serialization.Formatters.Binary;
4
5 namespace ConsoleApplication1
6 {
7 class Program
8 {
9 static void Main(string[] args)
10 {
11 #region 序列化
12 MyClass my = new MyClass();
13 my.Name = "illday";
14 my.Age = 28;
15
16 System.Runtime.Serialization.IFormatter formatter = new BinaryFormatter();
17 //创建一个文件流
18 Stream stream = new FileStream(@"c:\MyClass.bin", FileMode.Create, FileAccess.Write);
19 using (stream)
20 {
21 //这里就是进行序列化了
22 formatter.Serialize(stream, my);
23 }
24 #endregion
25
26 #region 反序列化
27 //不用NEW了反序列化后会给出一个该对像的引用
28 MyClass my;
29 System.Runtime.Serialization.IFormatter formatter = new BinaryFormatter();
30 //打开一个文件流
31 Stream stream = new FileStream(@"c:\MyClass.bin", FileMode.Open, FileAccess.Read);
32 using (stream)
33 {
34 //这里就是反进行序列化了
35 my = (MyClass)formatter.Deserialize(stream);
36 }
37
38 Console.WriteLine(my.Name);
39 Console.WriteLine(my.Age);
40 #endregion
41 }
42 }
43
44 [Serializable]
45 public class MyClass
46 {
47 public string Name { get; set; }
48 public int Age { get; set; }
49 }
50 }


三、持久化和序列化

持久化,是一种对象服务,就是把内存中的对象保存到外存中,让以后能够取回。需要实现三个接口:

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

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

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

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

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

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

序列化是为了解决对象的传输问题,传输可以在线程之间、进程之间、内存外存之间、主机之间进行。之所以在提到序列化,是因为我们可以利用序列化来辅助持久化,可以说凡是可以序列化的对象都可以持久化。

转载于:https://www.cnblogs.com/illday/archive/2011/12/12/2285261.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值