8
votes

Quel est le moyen le plus simple de persister les objets Java?

En ce moment, j'ai un programme Java dont les classes sont actuellement pojos et stockées dans la mémoire volatile. Ceux-ci doivent être persistés. Si je comprends bien, deux choix populaires sont JDO et l'API de la persistance Java. Pour quelqu'un qui connaît peu de SQL, de couple, etc., qui est le moyen le plus simple d'ajouter de la persistance aux données de mon programme?


1 commentaires

Pour tout ce qui est (ONU) saint, reste aussi loin du couple que possible.


6 Réponses :


6
votes

Serialiser les objets dans le système de fichiers Si vous ne connaissez pas les bases de données SQL ou relationnelles.

Vous devrez apprendre JDBC pour utiliser JDO, JPA, Hibernate ou autre chose. À moins que vos pojos soient terriblement complexes, je vous recommande de commencer et de travailler votre chemin.

Assurez-vous d'en savoir plus sur la normalisation et la conception appropriée d'index.


4 commentaires

Pour utiliser JDO, JPA ou Hibernate, vous n'avez clairement pas besoin de connaître JDBC depuis que c'est le point de ces API. Ils utilisent JDBC sous les couvertures lorsqu'ils persistent aux SGDBR, de sorte que cette complexité soit cachée de votre part


Je suis en désaccord - il n'est pas conseillé de les utiliser sans connaître JDBC. La complexité est cachée, mais c'est une abstraction qui fuit.


Pas une abstraction fuite avec JDO, bien que certainement JPA et Hibernate soient fortement liées à JDBC. Dépend de quelle API le questionneur décide d'aller


Je ne connais pas assez bien JDO pour évaluer son étanchéité d'abstraction, mais je ne recommanderais pas à personne de la persistance avec une base de données relationnelle sans rien savoir à leur sujet.



2
votes

On dirait que vous voudrez peut-être persister à un dB. Cependant, pour éviter les complexités d'une solution simple d'une simple solution pour persister les pojos du système de fichiers consiste à les sérialiser dans un document XML. L'API Java 1.6 inclut le Framework JAXB trouvé dans le package Javax.xml.Bind. Pour utiliser Jaxb, vous annotation essentiellement de votre pojo et créez des méthodes de maréchal et de methalhal, comme:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Foo>
   <Bar>42</Bar>
</Foo>


1 commentaires

Le Datanuclevée cache tout ce qui marquait et démarquent de l'utilisateur et ajoutez simplement des annotations JDO ou JPA aux classes qu'ils souhaitent persister. Moins de code. Moins à gérer



8
votes

La manière traditionnelle de sérialiser sur le système de fichiers est d'utiliser sérialisation Java . Toutefois, vous devez implémenter sérialisable partout.

Une solution plus simple consiste à sérialiser à XML (puis à vider au système de fichiers) à l'aide de Xstream . Vous n'avez pas besoin de mettre en œuvre des interfaces, ainsi que la plupart des sérialisées et des désérialisations sans autre intervention. Vous pouvez également personnaliser la sérialisation si nécessaire. Le seul problème que j'ai jamais eu est de sérialiser une classe intérieure sans sérialiser intentionnellement la classe extérieure contenant (celle-ci est due à la référence implicite référence)


0 commentaires

5
votes

La manière la plus simple que je suis tombée à travers comme est encore dB4O : xxx

De plus, il y a de très belles façons d'interroger d'une autre manière.


1 commentaires

Malheureusement: En octobre 2014, Actian a refusé de continuer à poursuivre et à promouvoir activement l'offre de produits commerciale DB4O pour les nouveaux clients. SupportServices.actian.com/versant/default.html



5
votes

Si la sérialisation est une option, envisagez d'utiliser une API de prévalence comme Prevalayer ou Space4J (plus récent). À propos de la prévalence de l'objet:

Prévalence est un concept lancé par Klaus Wuestefeld sur la manière de stocker des données de manière réelle objet, en utilisant uniquement des instantanés de mémoire, des journaux de transaction et une série de sérialisation.

vérifier Cet article Pour en savoir plus sur ce sujet (plus sur Google ).


2 commentaires

Space4J propose également une cluster et une indexation transparentes.


lien semble être mort - space4j.org est quelque chose de différent maintenant



2
votes

Datanuclevéus est le moyen le plus simple car il fournit des API JDO et JPA pour la persistance à peu près tout type de Datastore que vous voudriez jamais. Pourquoi écrire tout ce code Jaxb dans l'une des autres réponses lorsque Datanucleus le fait pour vous? Tous sauvegardés par des normes Java et open source.

Divulgation: L'auteur de cette réponse est associé au projet Datanuclevéus.


0 commentaires