2013-07-14 1 views
0

Oracle 데이터베이스가 Java 저장 프로 시저 호출의 반환 값에서 Java 객체를 반환 할 수 있습니까?Oracle DBMS는 Java 저장 프로 시저 호출에서 Java 객체를 반환 할 수 있습니까?

Java 저장 프로 시저에 대한 호출로 Oracle 데이터베이스를 쿼리하고 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 반대로 자바주의하시기 바랍니다 도움이 될 수 있습니다! –

+0

저장 프로 시저를 사용하여 네트워크 드라이브에 저장된 이진 파일을 구문 분석하는 것은 불가능합니다. – erencan

답변

0

당신은 텍스트 파일에서 데이터베이스에있는 모든 직렬화 데이터를 저장할 수 있습니다, 자바 객체에 대한 이미지. 여기서 기본 로직은 모든 ​​데이터가 바이트 스트림으로 직렬화되어 DB에 저장됩니다. 그들은 DB에서 가져올 때 deserialized됩니다. 당신이 정말로 원한다면 내 대답을 건너 뛸 수 있습니다. 그러나 데이터베이스 필드를 Java 클래스에 매핑하는 것이 더 나은 해결책이며이 설명에 대한 설명이 나옵니다.

당신은이 목적을 위해 ORM (Object Relational Mapping) 프레임 워크를 사용합니다. Hibernate, JPA 또는 Spring JDBC Template 일 수 있습니다. 그 중 하나는 요구 사항에 따라 사용할 수 있습니다.

프레임 워크를 사용하지 않으려면 기본적으로 구현할 수 있습니다.

사용자 이름과 암호와 같은 2 개의 필드 구조를 구현하십시오. 나는 두 필드가 모두

이라고 가정합니다. 먼저 쿼리 결과에 매핑되는 모델 클래스가 있어야합니다.

class Model 
{ 
    private String username; 
    private String password; 

    //setter and getters. 
} 

두 번째로, 쿼리 결과에서 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를 사용하지 않습니다. 가장 큰 의심은 레코드로 자바 객체를 반환하는 방법이다. 더 많은 정보를 가지고 질문을 편집했습니다. – zd5151

+0

삽입하는 동안 직렬화하지 않으면 Java 오브젝트를 리턴 할 수 없습니다. – erencan