java中将数据对象序列化后保存到数据库中,并反序列化取出显示
更具体内容请参照:http://www.ibm.com/developerworks/cn/xml/x-datamineparsephp/index.html
* 向数据库插入一条战斗回放记载
* @param matchMovie 比赛回放记载
*/
public int PlayBackGame(MatchMovie matchmove) {
byte[] buf = null;
try {
buf = SerializeUtil.serializeObject(matchmove);
} catch (IOException e) {
e.printStackTrace();
}
Connection conn = null;
CallableStatement cstmt = null;
try {
conn = DBHelper.getConnection();
cstmt = conn.prepareCall("{call PlayBackGame(?,?,?,?,?)}");
cstmt.setInt(1, matchmove.getOrgId1());
cstmt.setInt(2, matchmove.getOrgId2());
cstmt.setBytes(3, buf);
cstmt.setByte(4, (byte) matchmove.getMatchType());
cstmt.registerOutParameter(5, Types.INTEGER);
cstmt.executeUpdate();
if (cstmt.getInt(5) != 0)
return cstmt.getInt(5);
} catch (SQLException e) {
logger.error("DatabaseMgr: PlayBackGame");
e.printStackTrace();
return 0;
} finally {
DBHelper.close(conn, cstmt, null);
}
return 0;
}
/**
* 显示某条回放记载
* @param backGameId 比赛回放记载ID
* @return 当前回放记载的完全信息
*/
public MatchMovie getPlayBackGame(int backGameId) {
Connection conn = null;
CallableStatement cstmt = null;
ResultSet rs = null;
MatchMovie matchMovie = null;
byte[] buf = null;
boolean isFristShow = false;
int movieId = 0;
try {
conn = DBHelper.getConnection();
cstmt = conn.prepareCall("{call getPlayBackGame(?)}");
cstmt.setInt(1, backGameId);
rs = cstmt.executeQuery();
while (rs.next()) {
buf = rs.getBytes("process");
isFristShow = rs.getBoolean("receiveDraw");
movieId = rs.getInt("pbgId");
}
try {
matchMovie = (MatchMovie) SerializeUtil.deserializeObject(buf);
matchMovie.setReceiveDraw(isFristShow);
matchMovie.setMovieId(movieId);
} catch (IOException e1) {
e1.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return matchMovie;
} catch (SQLException e) {
logger.error("DatabaseMgr: getPlayBackGame");
e.printStackTrace();
} finally {
DBHelper.close(conn, cstmt, rs);
}
return null;
}
==============
public final class SerializeUtil {
/** 序列化对象
* @throws IOException */
public static byte[] serializeObject(Object object) throws IOException{
ByteArrayOutputStream saos=new ByteArrayOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(saos);
oos.writeObject(object);
oos.flush();
return saos.toByteArray();
}
/** 反序列化对象
* @throws IOException
* @throws ClassNotFoundException */
public static Object deserializeObject(byte[]buf) throws IOException, ClassNotFoundException{
Object object=null;
ByteArrayInputStream sais=new ByteArrayInputStream(buf);
ObjectInputStream ois = new ObjectInputStream(sais);
object=(MatchMovie) ois.readObject();
return object;
}
}
分享到:
相关推荐
通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...
通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...
通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...
通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...
通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...
通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从...
然后再取出来,并进行名称的修改,然后我们再取这个对象,我们再看其名称,发现修改的对象并不是缓存中的对象,而是通过序列化过来的一个实例对象,这样我们就无须担心对原生类的无意修改导致缓存数据失效了,呵呵~~...