簡體   English   中英

Oracle DBMS可以從Java存儲過程調用返回Java對象嗎?

[英]Can Oracle DBMS return a Java object from a Java stored procedure call?

Oracle數據庫是否可以從Java存儲過程調用的返回值返回Java對象?

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

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

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

我希望實現這樣的目標:

 #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

其他信息:我沒有使用Java EE。

提前致謝。

您需要做的是, Java對象與Oracle數據庫表進行序列和反序列化。 您可以使用BLOB列類型將序列化對象字節存儲在Oracle表中。 這是一個描述如何從表中存儲和檢索Java對象的鏈接。

http://asktom.oracle.com/pls/apex/f?p=100:11:0::::p11_question_id:1285601748584

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

為此,您應該使用對象關系映射(ORM)框架。 它可以是HibernateJPASpring JDBC Template 其中一個可以根據您的要求使用。

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

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

首先,您應該有一個模型類,它將映射到查詢結果。

class Model
{
     private String username;
     private String password;

    //setter and getters.
} 

其次,您應該實現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;
   }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM