2011-10-18 4 views
2

많은 양의 데이터를 연속적으로 다운로드하는 애플리케이션을 개발 중입니다.대형 ArrayLists를 SQLite에 저장

json 형식의 데이터이며 Gson을 사용하여 데이터를 역 직렬화합니다. 지금까지는 이것을 SQLite db에 저장했습니다. 그리고 관계를 계산하여 관계 db에 저장해야합니다. 그러나 이것은 너무 많은 시간이 걸립니다.

클래스 객체를 db에 저장하는 것이 훨씬 편리합니다.

Class A{ 
private String name; 
private List<B> subItems; 
} 

Class B{ 
private String name; 
private List<C> subItems 
} 

내가 그들을 직렬화함으로써 예를 들어, 쉬운 방법이 지속 할 수 :

데이터는 직렬화 한 후 다음과 같이 보입니다? 어떻게 할 수 있습니까?

답변

7

네, 직렬화가 더 나은 해결책이며, 안드로이드에서 작동합니다. 다음의 예는 http://www.jondev.net/articles/Android_Serialization_Example_%28Java%29

직렬화 방법에서 가져온 것입니다 :

public static byte[] serializeObject(Object o) { 
    ByteArrayOutputStream bos = new ByteArrayOutputStream(); 

    try { 
     ObjectOutput out = new ObjectOutputStream(bos); 
     out.writeObject(o); 
     out.close(); 

     // Get the bytes of the serialized object 
     byte[] buf = bos.toByteArray(); 

     return buf; 
    } catch(IOException ioe) { 
     Log.e("serializeObject", "error", ioe); 

     return null; 
    } 

직렬화 방법을을 :

public static Object deserializeObject(byte[] b) { 
    try { 
     ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(b)); 
     Object object = in.readObject(); 
     in.close(); 

     return object; 
    } catch(ClassNotFoundException cnfe) { 
     Log.e("deserializeObject", "class not found error", cnfe); 

     return null; 
    } catch(IOException ioe) { 
     Log.e("deserializeObject", "io error", ioe); 

     return null; 
    } 
+0

감사합니다 많이! 이제 어떻게 클래스 간의 관계를 처리 할 수 ​​있습니까? 클래스 A는 클래스 B가있는 목록을 보유합니다. 각 클래스 또는 "최상위"클래스를 직렬화합니까? – johan

+0

두 클래스를 모두 직렬화 가능하게 만듭니다. 제 생각에 클래스 A를 직렬화한다고 생각합니다. – Caner

+0

Ok. 그리고 나는 그들을 blob로 저장합니까? – johan

관련 문제