[英]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)框架。 它可以是Hibernate , JPA或Spring 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.