2013-07-14 61 views
0

Oracle數據庫能否從Java存儲過程調用的返回值中返回一個Java對象?Oracle DBMS可以從Java存儲過程調用中返回Java對象嗎?

我想通過調用java存儲過程來查詢Oracle數據庫,並接收java對象作爲結果。這可能嗎?如果是這樣,有人能提出一個非常簡單的例子嗎?

注意:我不想將序列化的對象存儲在數據庫中。我想運行Java存儲過程,並讓此過程返回一個Java對象。所以如果查詢數據庫,每個返回的記錄將是一個Java對象。

例如: 我想讓Java存儲過程解析存儲在網絡共享驅動器中的二進制文件,使用從二進制文件中提取的信息構建Java對象,並返回此Java對象作爲查詢結果。

我要實現的是這樣的:我不使用Java EE :

#Using Java or Python programming language 
results = execute(Select java_procedure_call(parameter) From dual); 
For java_obj in results: 
    print java_obj.name 
    print java_obj.city 

其他信息。

在此先感謝。

+1

這可以幫助你http://asktom.oracle.com/pls/asktom/ASKTOM.download_file?p_file=6551171813078805685 – user2506840

+0

請注意它的Java,而不是java或JAVA! –

+0

使用存儲過程解析存儲在網絡驅動器中的二進制文件是不可能的。 – erencan

回答

0

您可以從文本文件存儲在數據庫中的任意系列化的數據,圖像爲Java對象。這裏的基本邏輯,任何數據都被序列化爲一個字節流並存儲在數據庫中。從數據庫中提取時,它們是反序列化的。如果你真的想這樣做,你可以跳過我的答案。但是,將數據庫字段映射到Java類是更好的解決方案,我的解釋將朝着這個方向發展。

您應該使用對象關係映射(ORM)框架來實現此目的。它可以是Hibernate,JPASpring JDBC Template。其中一個可以根據您的要求使用。

如果你不想使用任何框架,你基本上可以實現它。

實現2個字段的結構,如用戶名和密碼。我假設這兩個字段都是String

首先,您應該有一個將被映射到查詢結果的模型類。其次,您應該實現Factory模式以從查詢結果中創建Java對象。

class BasicModelFactory 
{ 

    public List<Model> getModels(ResultSet rs) 
    { 
     List<Model> models = new ArrayList<Model>(); 
     while(rs.next()) 
     { 
      Model m = new Model(); 
      m.setUsername(rs.getString("username"); 
      m.setPassword(rs.getString("password"); 
      models.add(m); 
     } 
     return models; 
    } 

} 
+0

我沒有使用JEE作爲例子。我最大的疑問是如何返回一個java對象作爲記錄。我用更多的信息編輯了這個問題。 – zd5151

+0

如果在插入時沒有序列化,則不能返回Java對象。 – erencan

相關問題