2012-10-03 193 views
0

我使用Jackson將JSON數據(從Internet服務器檢索到的)映射到應用程序對象(例如Artist,Clip,Playlist)。大多數情況下,數據是靜態的,因此我不需要過多地加載它 - 所以我想將它存儲在數據庫中。我需要一個類似於Jackson的mapper,它將解析數據庫輸出併爲我構建對象(例如Artist,Clip,Playlist)。有沒有 ?數據庫映射庫

謝謝。

+0

ORMLite可能是要走的路:http://stackoverflow.com/a/3120297/772122 – twaddington

回答

1

你在找什麼是一個ORM(對象關係映射)庫。在this post有一個關於ORM解決方案的很好的討論。

1

使用以下解決方案解決此問題的一種方法。

可以使用對象關係映射(ORM)技術(示例爲Hibernate,TopLink)將數據庫表映射到Java對象。 對於從Java對象解析爲JSON對象,您可以使用JAXB註釋。 JaxB註記類和元帥示例如下。

JAXB註釋的Java例子

import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlRootElement; 

@XmlRootElement 
public class UserJaxB { 

private String name; 
private String id; 

public UserJaxB() { 
} 

@XmlElement(name = "id") 
public String getId() { 
    return id; 
} 

public void setId(String id) { 
    this.id = id; 
} 

@XmlElement(name = "name") 
public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 
} 

編組例

import java.io.*; 
import javax.xml.bind.*; 
import javax.xml.stream.XMLStreamWriter; 
import org.codehaus.jettison.mapped.*; 

public class MarshalDemo { 

public static void main(String[] args) throws JAXBException { 
    JAXBContext jc = JAXBContext.newInstance(UserJaxB.class); 
    Unmarshaller unmarshaller = jc.createUnmarshaller(); 
    UserJaxB userJaxB = new UserJaxB(); 
    userJaxB.setId("123"); 
    userJaxB.setName("ravi"); 

    Configuration config = new Configuration(); 
    MappedNamespaceConvention con = new MappedNamespaceConvention(config); 
    Writer writer = new OutputStreamWriter(System.out); 
    XMLStreamWriter xmlStreamWriter = new MappedXMLStreamWriter(con, writer); 

    Marshaller marshaller = jc.createMarshaller(); 
    marshaller.marshal(userJaxB, xmlStreamWriter); 
} 

}