comment stocker un objet json à hibernate champ de base de données
mon cas est le suivant. J'ai un formulaire JSF avec trois outputtexts & inputtexts permet de dire:
outputtext1 - inputtext1
outputtext2 - inputtext2
outputtext3 - inputtext3
Actuellement, je utiliser un backbean méthode "Enregistrer" afin de les stocker dans la base de données (hibernate objet permet de dire table1 avec la clé primaire de la table table1.id) dans les champs de la table table1.champ1, table1.champ2, table1.champ3.
Afin que chaque enregistrement dans la table les valeurs insérées dans la inputtexts.
Ma question est comment je vais faire pour stocker les données du formulaire dans la base de données, dans une forme comme suit:
{"outputtext1:inputtext1","outputtext2:inputtext2"."outputtext3:inputtext3"}
et puis les récupérer à nouveau, d'analyser et de reconstruire la forme. Je pense à la manipulation des données de formulaire comme objet JSON... Mais je suis de nouveau à la fois Java+JSON pour certains principes qui serait vraiment utile pour moi!
C'est un indicatif exemple, formulaire vont par la dynamique et créé à la volée.
varchar
. Utiliser un Sérialiseur JSON.alors, suis-je dans le bon sens sur la façon de manipuler les données d'un formulaire? Le formulaire doit être dynamique, donc il n'y a pas de format standard de données du formulaire.
Si il n'y a pas de formulaire standard, alors que je suis en supposant que vous êtes la génération de la Chaîne JSON. Une fois que vous avez, le stocker dans un champ de type varchar.
OriginalL'auteur thanili | 2013-04-05
Vous devez vous connecter pour publier un commentaire.
Pourquoi voudriez-vous pour sérialiser/désérialiser un JSON de les envoyer directement à la base de données? La désérialisation a ses propres enjeux et plusieurs deserializations pourrait (pas sera) être une source de problèmes.
Vous devez enregistrer les champs comme les attributs d'une entité donnée et ensuite, avec l'aide de bibliothèques comme Gson, générer du JSON à partir de l'entité.
Mise à jour
Depuis votre forme est dynamique, vous pouvez utiliser certains adaptable entité de la structure pour stocker vos données.
Votre entités peuvent avoir un
Map<String,String>
attribut ou une collection de, disons,FieldRecord
entités qui contiennent une paire clé - valeur.Je propose cela parce que d'un JSON dans la base de données peut conduire à des problèmes complexes, en particulier si vous aurez à la requête de données plus tard. Vous aurez à traiter les JSONs afin d'état ou de trouver les enregistrements qui ont un domaine particulier. C'est juste un exemple, les choses peuvent devenir plus complexes.
Vous pouvez avoir une entité avec un
Map<String,String>
ou une liste de l'association des entités. IMO le Stockage d'un JSON dans la base de données peut être très difficile à gérer, en particulier si vous souhaitez interroger sur certains champs plus tard. Encore, si vous êtes fixés sur l'utilisation de json, il suffit de créer et de le stocker dans une variable de type VARCHAR.OK Gamb, je vais vérifier votre suggestion pour un moyen plus simple. En effet, j'aurais une requête à la base de données afin de récupérer déjà présenté des valeurs pour les formulaires qui sont chargées à nouveau. Donc je suppose que je vais devoir chercher de l'objet JSON, désérialiser, les analyser, les comparer avec la forme du champ id et recostruct la forme 🙂 il a l'air trop trop de problèmes...
C'est exactement ce que je voulais vous épargner 🙂
OriginalL'auteur Fritz
Simple, vous avez besoin d'une colonne de type BLOB dans votre table pour stocker le json et quand vous le retrouver en java, vous avez juste besoin de décoder le json et je vous conseille d'utiliser https://code.google.com/p/json-simple/ très simple
OriginalL'auteur Stephan
Convertir
JSONObject
dans unString
formulaire et ensuite le stocker.Et quand votre le lire, de le reconvertir en
JSONObject
comme ci-dessous :OriginalL'auteur rai.skumar
changement hibernate-mapping comme ceci
JSONObject obj = new JSONObject(stringRepresentationOfJSON);
OriginalL'auteur Aditya Singh