spring 和hibernate怎样操作blob字段

现在又一个应用场景,前台数据操作数据我以HashMap保存起来然后存入数据库中的blob字段,现在怎样在把它取出来放到一个map中
[b]问题补充:[/b]
请问有没有spring结合hibernate操作的 ,看了一些网上的配置都有错误,多谢大侠们的解答

[code="java"] //测试用HashMap

HashMap staff=new HashMap();

staff.put("001","true");

staff.put("002","false");

staff.put("003","false");

import oracle.sql.*;//oracle提供的JDBC包

//写入oracle数据库

Connection con=dbConn.getConnection();

con.setAutoCommit(false);

Statement st=con.createStatement();

//关键!!之所以用了这么长时间就是因为没有对BLOB字段初始化!

//插入新的数据时一定要使用EMPTY_BLOB()对BLOB字段初始化!!!

st.executeUpdate("UPDATE TABLE_NAME SET BLOB_VALUE=EMPTY_BLOB() WHERE ID=10");

ResultSet rs = st.executeQuery(

"SELECT BLOB_VALUE " +

"FROM TABLE_NAME " +

"WHERE id = 10 FOR UPDATE"

);

rs.next();

      BLOB   myBlob   =(BLOB)   rs.getObject("BLOB_VALUE");  

      ObjectOutputStream   oos=new   ObjectOutputStream(myBlob.getBinaryOutputStream());  

      oos.writeObject(staff);  

      oos.flush();  
      st.execute("commit");  
      ……  

//从oracle数据库中读出

Connection con=dbConn.getConnection();

Statement st=con.createStatement();

ResultSet rs2 = st.executeQuery(

"SELECT BLOB_VALUE " +

"FROM TABLE_NAME " +

"WHERE id = 10"

);

rs2.next();

      BLOB   blob   =(BLOB)   rs.getObject("BLOB_VALUE");  

ObjectInputStream ois=new ObjectInputStream(blob.getBinaryStream());

HashMap h1=(HashMap) ois.readObject();

String s1=(String) h1.get("001");

system.out.println(s1);//打印出“true”

ois.close();[/code]

参考
使用JDBC和Hibernate来写入Blob型数据到Oracle中

http://www.iteye.com/topic/254

[color=blue]

其实这就是对象的序列化与反序列化,在数据库中的应用(平时,都是序列化在文件中,现在是序列化到数据库中)

Blob其实就是2进制的bit数据。和对象序列化后的结果一样。所以在JPA中Serializable的数据也是用Blob来存储的。这正是你使用的场景:将序列化的对象以Blob的形式存储在数据库中。

因此可以用对象反序列化的方式恢复Map。不同的就是,以前反序列化时,用的是从File对象开始获取,然后再通过ObjectInputStream,反序列化。现在是从ResultSet获取Blob,然后获取InputStream,最后再通过ObjectInputStream,反序列化。

[/color]
[code="java"]

Blob blob = rs.getBlob();

ObjectInputStream in = new ObjectInputStream(blob.getBinaryStream());

HashMap map = (HashMap)in.readObject();

in.close();

[/code]