JAVA对象持久化

持久化就是将内存中的数据保存起来,使之可以长期存在。在JAVA中,我们可以把JAVA对象直接保存在文件中,在需要使用的时候,直接从文件中读取,这也是对象持久化的一种方式,在这一篇博客中,将演示两种将JAVA对象持久化到文件的方法,直接上代码:

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;

/**
 * JAVA对象持久化
 *
 * @author jianggujin
 *
 */
public class JavaSerializable
{
   /**
    * 持久化为XML对象
    *
    * @param obj
    * @param out
    */
   public void storeXML(Object obj, OutputStream out)
   {
      XMLEncoder encoder = new XMLEncoder(out);
      encoder.writeObject(obj);
      encoder.flush();
      encoder.close();
   }

   /**
    * 从XML中加载对象
    *
    * @param in
    * @return
    */
   public Object loadXML(InputStream in)
   {
      XMLDecoder decoder = new XMLDecoder(in);
      Object obj = decoder.readObject();
      decoder.close();
      return obj;
   }

   /**
    * 持久化对象
    *
    * @param obj
    * @param out
    * @throws IOException
    */
   public void store(Object obj, OutputStream out) throws IOException
   {
      ObjectOutputStream outputStream = new ObjectOutputStream(out);
      outputStream.writeObject(obj);
      outputStream.flush();
      outputStream.close();
   }

   /**
    * 加载对象
    *
    * @param in
    * @return
    * @throws IOException
    * @throws ClassNotFoundException
    */
   public Object load(InputStream in) throws IOException,
         ClassNotFoundException
   {
      ObjectInputStream inputStream = new ObjectInputStream(in);
      Object obj = inputStream.readObject();
      inputStream.close();
      return obj;
   }

   public static void main(String[] args) throws Exception
   {
      String storeName = "java object";
      File xmlFile = new File("xmlFile.dat");
      JavaSerializable serializable = new JavaSerializable();
      serializable.storeXML(storeName, new FileOutputStream(xmlFile));
      System.out.println(serializable.loadXML(new FileInputStream(xmlFile)));
      File file = new File("file.dat");
      serializable.store(storeName, new FileOutputStream(file));
      System.out.println(serializable.load(new FileInputStream(file)));
   }
}

运行结果:
java object
java object

我们可以打开示例中生成的两个文件:
xmlFile.dat
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0_45" class="java.beans.XMLDecoder">
<string>java object</string>
</java>

file.dat

时间: 2024-09-20 00:20:59

JAVA对象持久化的相关文章

借助BeanKeeper快速实现对象持久化

引言 NetMind BeanKeeper 是一个开源的 java 对象 / 关系数据库映 射框架,它可以帮助用户快速将对象保存到关系数据库中,同时它也支持自定义 地查询和事务,可以满足用户在各种应用场景的需求.它最大的特点就是简单, 无需配置.同时,它是纯 Java 的,也支持 HSQLDB 和 MySQL 等多种关系数据库.本文将介绍 BeanKeeper 的基本原理和架构,并将其同 Hibernate.Spring 等其他框架进行比较,总结其主要优点.最后将演示一个案例介绍如何借助 Bea

Java对象序列化/反序列化的注意事项(转)

Java对象序列化     对于一个存在Java虚拟机中的对象来说,其内部的状态只是保存在内存中.JVM退出之后,内存资源也就被释放,Java对象的内部状态也就丢失了.而在很多情况下,对象内部状态是需要被持久化的,将运行中的对象状态保存下来(最直接的方式就是保存到文件系统中),在需要的时候可以还原,即使是在Java虚拟机退出的情况下.     对象序列化机制是Java内建的一种对象持久化方式,可以很容易实现在JVM中的活动对象与字节数组(流)之间进行转换,使用得Java对象可以被存储,可以被网络

java对象序列化的概念和实现

一 序列化的概念和实现方法 序列化的概念就是把一个Object直接转换成为Byte流写到硬盘或者通过网络进行传播.Java序列化技术可以将一个对象的状态写入一个Byte流里,并且可以从其它地方把该Byte流里的数据读出来,重新构造一个相同的对象.这种机制允许将对象通过网络进行传播,并可以随时把对象持久化到数据库.文件等系统里.Java的序列化机制是RMI.EJB等技术的技术基础.   序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写操作,也可将

关于对象持久化的一些理论

问题描述 对象持久化理论:什么叫做对象持久化?将内存中以对象状态存在的数据转存到外部持久设备上.(注:这个转向不是单向的,而是可以在内外之间相互转换)为什么要对象持久化?1内存不能长时间保存数据2内存容量有限,尤其对于企业级的海量数据而言.3内存是严格受保护的,只可以在本地使用其中的数据.但是大部分的时候我们需要共享其中的数据,所以需要转存出来,以共享数据.4在众多的内存对象中做条件查询很困难,所以需要将数据做一个格式化的转化,以方便大规模的检索.[color=#FF0000请问:支持大规模检索

java对象的序列化和反序列化_java

本文实例为大家分享了java对象的序列化和反序列化,供大家参考,具体内容如下 1. 什么是序列化       将对象转换为字节流保存起来,比如保存到文件里,并在以后还原这个对象,这种机制叫做对象序列化.(补充一句:把对象保存到永久存储设备上称为持久化) 2. 怎么实现序列化        需要实现Serializable接口,java对象实现了这个接口就表明这个这个类的对象是可序列化的. 3. 序列化的注意事项 (1) 当一个对象序列化时,只能保存对象的非静态成员变量,不能保存方法和静态成员变量

java对象中属性值为空字符串的问题

问题描述 java对象中属性值为空字符串的问题 业务逻辑中需要将对象中为空字符串的属性转换为null,首先我想到是将对象转为一个数组, 然后遍历数组,将""转为 null ,不过这样应该不对,大家给个思路 解决方案 用 反射 获得所有字段的数组,然后遍历判断~~~~~~ 解决方案二: 你为什么还要遍历呢,你前台传过来的数据先处理再装对象,这样才对 解决方案三: 传到后台后,先判断 if("".eques(name)){ name=null; } object.set

Ajax 的 Java 对象序列化

ajax|对象 如果您正在使用异步 JavaScript 和 XML(Ajax)进行 Java Web 开发,那么您最关心的问题可能就是把数据从服务器传递给客户机.在面向 Java 开发人员的 Ajax 系列的文章中,Philip McCarthy 介绍了 Java 对象序列化的五种方式,并提供了选择最适合应用程序的数据格式和技术所需要的全部信息.本文将侧重于许多 Java Web 开发人员最关心的问题:为客户机生成数据. 多数 Java 开发人员已经把模型-视图-控制器(MVC)模式应用在他们

Ajax 的 Java 对象序列化(2)

ajax|对象 Fujak Superpix72 Camera 7.2 Megapixel digital camera featuring six shooting modes and 3x optical zoom. Silver.$299.99自行序列化的不足 有趣的是,清单 3 中的代码展示了让 JavaBean 把自己序列化为 XML 的一个主要不足.假设要用这个文档表示顾客的订单历史视图.在这种情况下,不太可能要显示每个历史订单中每个商品的完整说明,或者告诉顾客他或她自己的姓名.但是

Ajax 的 Java 对象序列化(1)

ajax|对象 如果您正在使用异步 JavaScript 和 XML(Ajax)进行 Java Web 开发,那么您最关心的问题可能就是把数据从服务器传递给客户机. 在面向 Java 开发人员的 Ajax 系列的文章中,Philip McCarthy 介绍了 Java 对象序列化的五种方式,并提供了选择最适合应用程序的数据格式和技术所需要的全部信息.本文将侧重于许多 Java Web 开发人员最关心的问题:为客户机生成数据. 多数 Java 开发人员已经把模型-视图-控制器(MVC)模式应用在他