2010-12-22 2 views
1

Je développe une application Java qui utilise Hibernate pour se connecter à la base de données MySQL.Nom de la table dynamique dans Hibernate

Mon application gère les étudiants de différents lots. Si un étudiant a rejoint en 2010, alors ils sont dans le lot 2010, donc chaque fois que les administrateurs de l'application créent un nouveau lot, mon application doit créer de nouvelles tables pour ce lot. Bien que le schéma ressemble beaucoup plus aux anciennes tables déjà présentes dans la base de données, le nom de la table change. Comment puis-je accomplir cela en utilisant Hibernate?

Comment créer les fichiers XML et les classes requises dynamiquement?

+0

Vérifiez la réponse de Pascal [ici] (http://stackoverflow.com/questions/3061846/hibernate-for-dynamic-table-creation) –

+6

Etes-vous sûr de vouloir créer de NOUVEAUX TABLES? Copier des tables lorsque vous ajoutez de nouvelles données est juste une mauvaise conception de base de données. Repensez votre conception dans une approche DB plus relationnelle;) – Bogdan

+2

Cela sent comme un mauvais design. Pourquoi ne pouvez-vous pas faire une table de lots et ajouter un lot à un étudiant par exemple. –

Répondre

2

Si j'ai bien compris votre problème, je pense que vous voulez vérifier Hibernate Shards. Notez qu'il s'agit d'une fonctionnalité avancée, non prise en charge et pas vraiment testée (ni maintenue). Alors, utilisez-le à vos risques et périls. Vous voudrez peut-être accorder une attention particulière à la section "Shard stratégie de sélection":

http://docs.jboss.org/hibernate/stable/shards/reference/en/html_single/#shards-strategy-shardselection

De la documentation:

Nous nous attendons à de nombreuses applications voudront mettre en œuvre sharding basée sur les attributs, donc pour notre exemple d'application qui stocke les rapports météo des rapports de fragmentation par les continents sur lesquels les rapports proviennent

Mais comme les autres l'ont dit: réfléchir à deux fois avant de diviser votre Les données. Faites-le seulement si vous attendez de très gros volumes de données. Quelques millions de disques ne sont pas vraiment beaucoup.

Questions connexes