2014年9月25日 星期四

[Java] ResultSet 序列化/反序列化應用於HTTP Protocol

ResultSet是JDBC用來回傳SQL結果的物件,原先設計考慮大量資料擷取並不會一次性將資料取回至ResultSet,而是可能會採取類似Cache概念,當發生Cache Error時,在動態跟後端資料庫拿取資料,因此,這樣的特性就不適用於Serialiable。那如果還是需要使用ResultSet來做訊息傳遞怎麼辦? 可以考慮以下這些做法
  1. 使用com.sun.rowset.jar來達成(Android上不能使用,kernel core衝突)
  2. 自幹搭配mockrunner
  3. 自幹
自幹方法還蠻容易的,只要做一個Convert來做轉換ResultSet與SerialiableResultSet的轉換,並implements會用到的JDBC Interfaces即可。

Scenario 就如圖一,Client發送Request,Server執行SQL Query後得到的結果(ResultSet),透過Convert Class轉換成一個可Serialiable的物件,然後透過Serialiable傳遞後,再透過Convert轉換回ResultSet即可,程式可參考 https://github.com/linuxxunil/blog/tree/master/Java/SerialiableResultSet



圖一: Request / Response Scenario

Reference :
[1] Java 序列化/反序列化 (Serialization/Deserialization)
[2] http://mockrunner.github.io/

沒有留言:

張貼留言