2010-11-21 76 views
0

添加文件塊我有一個接收塊映射字節[]在休眠和塊

public void addFileChunk(Long fileId, byte[] buffer) 

100 MB的視頻文件,我怎麼能存儲使用Hibernate在PostgreSQL數據庫文件的Web服務?

使用常規JDBC非常簡單。我將在我的Web服務方法中使用以下代碼:

LargeObject largeObject = largeObjectManager.Open(fileId, LargeObjectManager.READWRITE); 
        int size = largeObject.Size(); 
        largeObject.Seek(size); 
        largeObject.Write(buffer); 
        largeObject.Close(); 

如何使用Hibernate實現相同的功能?並通過塊來存儲這個文件?

將每個文件塊作爲bytea存儲在單獨的行中似乎並不是那麼聰明的想法。請教建議。

+0

爲什麼不簡單繞過Hibernate呢? – 2010-11-21 23:18:26

+0

因爲這是Spring集成的Web服務,我已經將Hibernate和Transaction管理bean注入並廣泛用於其他方法。所以我不想打開新的JDBC連接來存儲這個文件。 – 2010-11-21 23:25:10

回答

1

現在建議在數據庫中存儲100MB文件。我會將它們存儲在文件系統中,但考慮到事務是活動的,使用Servlet似乎是合理的。

  1. 處理http請求,以便文件(接收到的一個)存儲在某個時間位置。
  2. 打開事務,保留文件元數據包括時間位置,關閉事務
  3. 使用一些外部進程將監視時間文件,將該文件傳輸到它的最終目的地,通過某些Servlet將其從用戶可用。
+0

我不知道爲什麼不建議將它們作爲PostgreSQL中的大對象存儲。 LOB接口爲您提供了一個類似文件系統的流式接口,因此您可以根據需要在輸入或輸出上進行分塊。它運作良好,如果需要的話,您甚至可以創建索引來索引重要數據的偏移量。 – 2012-10-05 02:00:27