Je travaille sur une application web. Nous utilisons Hibernate comme ORM dans notre projet. En fait, notre application crée des tables dynamiquement en fonction de la sélection de l'utilisateur. L'utilisateur peut sélectionner le nom de la table, le nom de la colonne, puis il peut importer les données d'un fichier csv. Donc ma question est: comment mapper cette table créée dynamiquement avec des objets Hibernate et Java?Comment mapper une table créée dynamiquement dans Hibernate?
Répondre
Il peut être fait de façon dynamique, mais il est un peu en désordre:
Vous aurez besoin de modifier dynamiquement l'objet de configuration de mise en veille prolongée avant SessionFactory est construit. Si vous utilisez Spring, cela peut être fait en remplaçant la méthode postProcessAnnotationConfiguration()
de AnnotationSessionFactoryBean
; Sinon, vous devrez juste le faire en utilisant votre objet Configuration avant d'appeler buildSessionFactory()
dessus. Si vous avez besoin de le faire sans redémarrer l'application, vous devez soit reconstruire votre SessionFactory (ce qui signifie que vos utilisateurs devront attendre jusqu'à ce que cela soit fait), soit utiliser une instance SessionFactory spécifique spécifiquement dédiée à vos classes personnalisées (est presque impossible si vos classes personnalisées doivent référencer vos classes intégrées).
Vous pouvez accéder aux mappages de classe/table via configuration.getMappings()
. Vous devrez ensuite créer un nouveau mappage de table via Table API et l'ajouter à la configuration via addTable()
. La même chose devra être faite avec PersistentClass qui représente un mappage de classe. Si vous utilisez la même classe pour représenter plusieurs entités (par exemple, pour mapper plusieurs tables), veillez à utiliser des noms d'entité uniques pour chacun d'eux. Vous devrez le faire (modifier la configuration) à chaque redémarrage de l'application.
Quelle proportion des tables sont créées dynamiquement? Les tableaux sont-ils similaires et vous changez simplement le nom de la base de données?
Voici une discussion de changer le nom de la table: http://www.experts-exchange.com/Programming/Languages/Java/J2EE/Frameworks/Spring/Q_24237099.html
Si vous construisez complètement une nouvelle table, vous pouvez utiliser une vue, et juste de diriger les gens à vue? Pourquoi utilisez-vous Hibernate pour cela, plutôt que de simplement créer dynamiquement des requêtes dans JDBC?
La solution de base de données - vous pouvez créer une vue et la diriger vers une table ou une autre (en supposant que la structure est identique).
CREATE VIEW HIBERNATE_NAME que SELECT * FROM TABLE_A
ou Créer une vue HIBERNATE_NAME comme SELECT * FROM TABLE_B
Vous devez vous demande d'exécuter SQL (DDL) natif, mais ce devrait être plus facile que Hibernate hacks
- 1. Table non créée par Hibernate
- 2. Insérer du texte après une table créée dynamiquement dans un mot à l'aide de VSTO
- 3. Comment recharger une propriété créée dynamiquement la prochaine fois?
- 4. Problème lors de l'insertion de données dans une colonne créée dynamiquement de la table
- 5. Puis-je convertir une table C# créée dynamiquement en une chaîne html?
- 6. hibernate - modèle pour mapper une entité par défaut?
- 7. page mobile: image créée dynamiquement chargement sporadique
- 8. Comment mapper une auto-référence dans NHibernate
- 9. Hibernate Table par Hiérarchie Comment
- 10. Comment mapper plusieurs classes à une table via NHibernate?
- 11. Comment mapper une table liée à une entité héritée (table par hiérarchie)?
- 12. Affichage Table créée par un tableau en utilisant une partie
- 13. Evénement On Change pour la liste déroulante créée dynamiquement VB.NET
- 14. Difficulté pour mapper une relation avec NHibernate
- 15. Comment mapper ceci dans NHibernate
- 16. Trouver la clé primaire créée par Hibernate JPA
- 17. Le modèle MVP avec l'interface utilisateur créée dynamiquement
- 18. Comment mapper une clé composite d'entité dans JPA?
- 19. Table introuvable avec Hibernate et HSQLDB
- 20. critères Hibernate contient-in sur une association à une table
- 21. MySQL: Déterminer Table Dynamiquement
- 22. Enregistrement du code HTML brut d'une page créée dynamiquement
- 23. Comment mapper des éléments dont ses sous-éléments sont dans la même table avec Nhibernate?
- 24. NHibernate: Comment mapper les enfants de plusieurs parents d'un type commun dans une seule table?
- 25. Mappage enum Hibernate 'sans table'?
- 26. Remplissage de la zone de texte créée dynamiquement avec javascript dans IE
- 27. ASP.Net: liste déroulante et source de données créée dynamiquement
- 28. Comment mapper deux tables à une classe dans NHibernate Fluent
- 29. Comment mapper une collection <T> dans NHibernate?
- 30. moyen privilégié pour mapper le code avec des entrées utilisateur base de données créée
Je suis d'accord, en utilisant Hibernate pour ce problème n'est pas correct. – sbidwai