java序列化对象到文件和数据库(Hibernate postgres)

package com.sj.test;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.sj.domain.Palm;


import sunjing.util.HibernateUtil;

public class PostgresTest {

 /**
  * @param args
  * @throws IOException
  * @throws SQLException
  * @throws ClassNotFoundException
  */
 public static void main(String[] args) throws IOException, SQLException, ClassNotFoundException {
  // TODO Auto-generated method stub
        

 

  

//  palm.setAcceptorNum("3");
//  palm.setPalmNum("008");
//  
//  Map map = new HashMap();
//  map.put("1","红烧鱼头");

//  palm.setTestValue(ObjectToBlob(map));
  
  

 


  Session session = HibernateUtil.getSession();
//  Transaction ts = session.beginTransaction();
//  session.save(palm);
//  Query query = session.createQuery("from Palm t");
//  List list = query.list();
//  ts.commit();
//  session.close();

 

 

 

 /**

/取数据
  Palm palm  = new Palm();
  
  Session session = HibernateUtil.getSession();
  
  Query query =session.createQuery("from Palm p where p.palmNum='008'");
  
  List list =query.list();
  
  System.out.println(list);
  
  Palm palm1=((Palm)list.get(0));
  
  System.out.println("21"+palm1.getPalmNum()+palm1.getTestValue());
      
  Object test = BlobToObject(palm1.getTestValue());

 

  Map test1 = (Map) test;
  
  System.out.println("test1:"+test1.get("1"));
  
 
  
 }

 /*
     * 将对象转化成java.sql.Blob
     * 要求 对象是序列化的
      */
     public static java.sql.Blob ObjectToBlob(Object obj) throws IOException{
         try {
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            ObjectOutputStream outputStream = new ObjectOutputStream(out);
            outputStream.writeObject(obj);
            byte [] bytes = out.toByteArray();
            outputStream.close();
            return Hibernate.createBlob(bytes);
        } catch (Exception e) {
             // TODO: handle exception

            System.out.println( " ObjectToBlob " );
             return null ;
        }
  
     }
   
     /*
     * 将java.sql.Blob 转化成 对象 相应对象
     * 要求 对象是序列化的
      */
     public static Object BlobToObject(java.sql.Blob desblob) throws IOException{
         try {
            Object obj = null;
         ObjectInputStream in = new ObjectInputStream(desblob.getBinaryStream());
            obj = in.readObject();
            in.close();
            return obj;
        } catch (Exception e) {
             // TODO: handle exception

            System.out.println( " BlobToObject " );
            e.printStackTrace();

        }
  return null;
       
     }
 
}

 

 

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM
   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping >
 <class name="com.sj.domain.Palm" table="palm" lazy="true">

  <!-- persist common fields START               -->
  <id name="id" type="long" column="id"
   unsaved-value="null" access="field">
   <generator class="native" />
  </id>

 

        <property name="palmNum" type="string" column="palmNum" />

       <property name="acceptorNum" type="string" column="acceptorNum" />

       <property name="fixingNum" type="string" column="fixingNum" />

        <property name="testValue" type="blob" column="valueTest" />
       
 </class>
</hibernate-mapping>

 

 

package com.sj.domain;

import java.io.Serializable;
import java.sql.Blob;

 

/**
 * 点菜机
 * @author sunjing
 *
 */
public class Palm implements Serializable {
    private Long id;
 private String palmNum; //点菜机编号
 private String acceptorNum; //连接器编号
 private String fixingNum; //点菜机设备号
  private Blob testValue;   //postgres数据库类型为oid
    
 public String getPalmNum() {
  return palmNum;
 }

 public void setPalmNum(String palmNum) {
  this.palmNum = palmNum;
 }

 public String getAcceptorNum() {
  return acceptorNum;
 }

 public void setAcceptorNum(String acceptorNum) {
  this.acceptorNum = acceptorNum;
 }

 public String getFixingNum() {
  return fixingNum;
 }

 public void setFixingNum(String fixingNum) {
  this.fixingNum = fixingNum;
 }

 
 public Long getId() {
  return id;
 }

 public void setId(Long id) {
  this.id = id;
 }

 public Blob getTestValue() {
  return testValue;
 }

 public void setTestValue(Blob testValue) {
  this.testValue = testValue;
 }

 
}

 

 

 

 

public static void writeObject(MapSystemInfo map) {  
     try {  
           
         FileOutputStream outStream = new FileOutputStream(System.getProperty("user.dir")+"//TXT//营业数据序列化.txt");  
         ObjectOutputStream objectOutputStream = new ObjectOutputStream(outStream);  
           
         objectOutputStream.writeObject(map);  
         outStream.close();  
         System.out.println("successful");  
     } catch (FileNotFoundException e) {  
         e.printStackTrace();  
     } catch (IOException e) {  
         e.printStackTrace();  
     }  
 } 
 
 
 public static MapSystemInfo readObject(){  
       
  FileInputStream freader;  
        try {  
            freader = new FileInputStream(System.getProperty("user.dir")+"//TXT//营业数据序列化.txt");  
            ObjectInputStream objectInputStream = new ObjectInputStream(freader);  
            MapSystemInfo map = new MapSystemInfo();  
             map = (MapSystemInfo) objectInputStream.readObject();  
             if(map!=null){
              return map;
             }
             
              
        } catch (FileNotFoundException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (IOException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        } catch (ClassNotFoundException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
       
        return null;      
    } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值