recherche

Maison  >  Questions et réponses  >  le corps du texte

java - Lorsqu'une application Web créée à l'aide de Springboot est en cours d'exécution, la table de base de données peut-elle être automatiquement générée et utilisée?

1. Parlons d'abord du principe :
Une application Spring construite avec Spring Boot
Hibernate est utilisée et spring-boot-starter-data-jpa est ajoutée au pom
La base de données est MySql ; est IDÉE.

Je n'ai jamais fait de développement Web auparavant et je ne connais pas grand-chose aux bases de données, alors ce que je vais dire ci-dessous, s'il y a une situation irréaliste ou si la méthode de mise en œuvre n'est pas bonne, j'espère que vous me le direz quelques conseils, merci ! !

2. Les besoins que vous souhaitez répondre :

Par exemple,
Je dois saisir les informations de plusieurs élèves de plusieurs écoles dans cette base de données.
La quantité de données peut être très importante et je ne souhaite pas mettre autant d'informations sur les étudiants dans le même tableau.
Mon idée est que
chaque école dispose d'un "tableau d'informations sur les élèves de l'école XX" (tbl_School_XX, tel que "tbl_School_01"), puis entrez les informations des élèves de cette école dans ce tableau.
Appliquer sa propre table d'index scolaire (tbl_School_Index). Cette table a un champ d'index (tel que index) pour stocker le nom de la table de chaque école (tel que "tbl_School_01").
·Lorsque vous souhaitez saisir les informations sur les élèves d'une nouvelle école, lors de l'ajout d'une école, l'application générera automatiquement un nouveau « Tableau d'informations sur les élèves de l'école XX » et l'application nommera automatiquement le tableau (tel que « tbl_School_01 »). Utilisez ce nouveau tableau pour stocker des informations sur les élèves de la nouvelle école. Parallèlement, ce nom de table sera également ajouté au champ d'index (index) de la table d'index scolaire (tbl_School_Index).
·Lorsque vous souhaitez lire les informations sur les élèves ou lorsque vous souhaitez saisir de nouvelles informations sur les élèves d'une école existante, les données dans le champ d'index (index) (telles que "tbl_School_01") seront trouvées dans la table d'index de l'école (tbl_School_Index ), puis Table de lecture/écriture tbl_School_01.

Comme le montre l'image


3. Les difficultés que je rencontre actuellement sont :

(1) Je sais que les bases de données relationnelles n'autorisent pas les tables dans les tables, j'ai donc proposé une telle méthode je ne sais pas si elle est réalisable ou appropriée.
(2) Lorsque je crée une nouvelle classe d'entité (@Entity), après avoir configuré les attributs et les méthodes get/set, l'exécution de l'application générera une table correspondante dans la base de données, mais je n'ai pas besoin de générer cette table ; une école est ajoutée, une table correspondant à cette classe d'entité est générée dynamiquement.

4. Autres idées

J'ai pensé à mettre les informations de tous les élèves de plusieurs écoles dans un tableau, puis à ajouter un champ « école » dans ce tableau pour indiquer de quelle école vient l'élève, mais j'ai peur que lorsque la quantité de données devient importante , Divers problèmes peuvent survenir lors de l'utilisation de ce tableau.

5. Ce que j'ai dit est peut-être un peu verbeux, merci de l'avoir lu attentivement, j'espère que vous pourrez me donner quelques conseils, merci !

仅有的幸福仅有的幸福2701 Il y a quelques jours1362

répondre à tous(1)je répondrai

  • 学习ing

    学习ing2017-07-05 10:48:15

    Lorsque vous souhaitez saisir les informations sur les élèves d'une nouvelle école, lors de l'ajout d'une école, l'application générera automatiquement un nouveau "Tableau d'informations sur les élèves de l'école XX", et l'application nommera automatiquement la table (comme "tbl_School_01"), utilisez ce nouveau tableau Pour enregistrer les informations des élèves de la nouvelle école. Parallèlement, ce nom de table sera également ajouté au champ d'index (index) de la table d'index scolaire (tbl_School_Index).

    Tout d'abord, sur la base de votre description actuelle (la description actuelle n'implique pas certaines opérations nécessitant des opérations sur tableaux croisés), cette méthode est réalisable lors de l'ajout d'élèves, si l'école n'existe pas, vous devez insérer l'index de l'école. et créez une nouvelle table associée. Insérez les informations sur l'étudiant. Cela peut être réalisé avec du code (c'est sans redémarrer l'application, je ne sais pas si cela peut être réalisé en utilisant la configuration). je sais. Merci.

    (2) Lorsque je crée une nouvelle classe d'entité (@Entity), après avoir configuré les attributs et les méthodes get/set, l'exécution de l'application générera une table correspondante dans la base de données, mais je n'ai pas besoin de générer cette table ; une école est ajoutée, une table correspondant à cette classe d'entité est générée dynamiquement.

    Ce dont vous parlez ici, c'est que l'application peut être redémarrée. Si l'application peut être redémarrée, les données peuvent être insérées via la configuration et les tables peuvent être automatiquement créées. Vous devez configurer la mise en veille prolongée et placer le script SQL correspondant sous ressources.

    Configuration de la mise en veille prolongée dans application.properties

    spring.datasource.driverClassName=com.mysql.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8
    spring.datasource.username=root
    spring.datasource.password=root
    
    # 1
    spring.jpa.properties.hibernate.hbm2ddl.auto=update
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5Dialect
    
    # 2
    spring.jpa.show-sql=true

    stockage de scripts SQL

    répondre
    0
  • Annulerrépondre