我有一個需要轉換爲「blob」對象並存儲到數據庫中的序列化對象。以前我們用來存儲一個由其他項目對象定義的對象,但是它遵循序列化規則,因爲它遇到了很多問題,所以我們決定改變現在只包含原始對象的結構「blob」對象(String,布爾值,整數等)。到目前爲止,我們可以使所有的屬性期望兩個將對象轉換爲Blob對象的問題
private byte[] encode(ScheduledReport schedSTDReport)
{
byte[] bytes = null;
try
{
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(schedSTDReport);
oos.flush();
oos.close();
bos.close();
//byte [] data = bos.toByteArray();
//ByteArrayOutputStream baos = new ByteArrayOutputStream();
//GZIPOutputStream out = new GZIPOutputStream(baos);
//XMLEncoder encoder = new XMLEncoder(out);
//encoder.writeObject(schedSTDReport);
//encoder.close();
bytes = bos.toByteArray();
//GZIPOutputStream out = new GZIPOutputStream(bos);
//out.write(bytes);
//bytes = bos.toByteArray();
}
上述被寫入團塊 斑點包含
public class ScheduledReport extends ScheduledReportInfo implements Serializable {
private SupervisoryScope _scope = null;
private Report _attributes = null;
private ScheduledReportScheduleBase _schedule = null;
private HashMap selectionList = new HashMap();
private EmailInfo _emailInfo = null;
private String _pdfFileName = null;
private short _baseDateOffset = -1;
在報告對象有follwoing屬性
private String deflt = null;
private Object guiValue = null;
protected Object serverValue = null;
可變對象可以有任何形式的陣列列表,字符串,布爾或一個類對象。 但是,一旦解碼爲實際對象,它就需要將類型轉換爲任意類型。我們的目標是將此對象轉換爲原始類型和存儲中的任何一種,並將其作爲原始值恢復。基本上我們認爲每個對象都是以對象類型附加的字符串的形式附加到它上面,如'1_整數','Y_Boolean'並轉換爲blob,同時恢復拆分字符串並將該字符串用作反射的一部分以獲取用於投射的對象類型。但這不是可行或正確的解決方案。有任何想法嗎。