2009-07-28 5 views
2

Je travaille sur un projet qui analyse des informations avec une bibliothèque NLP à partir d'annonces classées sur des forums Internet. Après le traitement, j'ai des instances de ForSaleItem et toutes sortes de détails comme condition, prix, etc.Comment persister un objet imbriqué compliqué avec JPA

Lorsque j'appelle la méthode toString() sur ces objets, elle ne retourne pas une chaîne stockée dans l'objet mais cherche plutôt son propre point de départ et de fin dans l'ensemble du forum, puis extrait le texte à partir de là. (Ceci est fait pour que je puisse calculer la proximité de certains bits de texte).

Je voudrais utiliser JPA pour conserver ces objets dans un SGBDR. Après le traitement, je ne me soucie plus vraiment de la proximité, je veux juste afficher les chaînes à l'utilisateur. Ce serait un énorme gâchis si je persistais l'ensemble du message du forum et continuer à récupérer le texte par la méthode ci-dessus.

Ma question maintenant: Dois-je améliorer les classes d'origine avec des champs String ou devrais-je créer une classe entièrement nouvelle, à savoir. quelque chose comme PersistentForSaleItem?

Répondre

0

On dirait que vos ForSaleItem ont plusieurs points vraiment incompatibles avec ce que vous voulez persister:

  • processus de récupération complexe de la chaîne

    -> non nécessaires après la persistance.

  • plusieurs objets qui seraient persistaient aux tables de multiples

    -> inutile complexe et lent, alors qu'avec un seul objet, vous pouvez stocker la chaîne dans une seule table, et récupérer plus efficacement.

Par conséquent, je vous conseille d'utiliser un objet différent pour la persistance.

Notez qu'il peut être très simple de créer, par exemple:

  • une classe, pas superclasse, avec l'annotation @Entity
  • un champ identifiant long, avec des annotations @Id et @GeneratedValue
  • un champ de chaîne, avec getter (avec @Column si vous voulez une longueur maximale de chaîne différente de la valeur par défaut 256) et régleurs
  • un constructeur vide (en option)

  • -
0

Je recommanderais de créer un nouvel article, qui persiste et ne contient que les pièces qui vous intéressent. Cela semble être le plus facile, et vous permettrait de séparer les préoccupations de collecte/manipulation des données et le stockage final et l'affichage des données. Vous pouvez même créer les objets persistants en passant dans l'autre objet pendant la construction, puis utiliser les configurations annotations/xml pour conserver l'objet dans le SGBDR.

Juste mes 2 cents.

Questions connexes