Java存取blob數據


背景

在項目開發中,經常會遇到需要存儲不定長的對象數組,如上傳一組圖片、添加一道題目等等,這個時候在數據庫中存儲一般需要用到存儲長度較大的blob類型,在java的實體類中對應blob類型的是byte數組。

思路

為了存儲的數據格式兼容性更高,我采用的是借助json的方式來處理,即存儲前,我將對象整理為json數組,然后通過jsonArray轉為byte數組存儲到數據庫中,讀取時,將byte數組再反轉為jsonArry即可。這樣做的好處是,json是跨平台的,java存的這部分數據其他平台也能夠處理,且java在處理過程中不需要知道這個對象的內部結構,這一點是非常重要的,尤其是在byte數組轉對象的過程中,如果存的是一個java對象,那么必須要知道該對象的具體結構才能反轉出來,反轉過程非常復雜,這樣該對象也不易再進行擴展,json則可以隨時擴展,改變其中的結構。

方法類

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;

public class JsonArrUtils {

    /**
     * json數組轉byte []
     */
    public static byte[] toByteArray(JSONArray obj) {
        return obj.toString().getBytes();
    }

    /**
     * byte []轉json數組
     */
    public static JSONArray toJsonArray(byte [] bytes) {
        try {
            return JSON.parseArray(new String(bytes));
        }
        catch (Exception e) {
            return null;
        }
    }
}

操作

//存對象
entity.setValue(JsonArrUtils.toByteArray(dto.getValue()));
//取對象
JsonArrUtils.toJsonArray(entity.getValue());


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM