2009-06-30 6 views
6

Y at-il des hibernate utitliy que je peux utiliser pour se connecter à la base de données. liste toutes les tables, et génère le script sql pour "créer des tables + données" et enregistrer en tant que * .sql?générer des scripts SQL

Répondre

7

Exporter des données à partir d'une base de données SQL

Utilisez le projet liquibase opensource

LiquiBase est une open source (LGPL), une bibliothèque de base de données indépendante pour le suivi, la gestion et l'application des modifications de base de données. Il repose sur une prémisse simple: toutes les modifications de la base de données (structure et données) sont stockées de manière descriptive XML et vérifiées dans le contrôle source.

créer Generate et un script drop pour les entités données JPA

Nous utilisons ce code pour générer la chute et de créer des déclarations: Il suffit de construire cette classe avec toutes les classes d'entités et appellent créer/dropTableScript.

Si nécessaire, vous pouvez utiliser un nom de persitence.xml et de persitance. Il suffit de dire quelque chose et je poste le code aussi.

 
import java.util.Collection; 
import java.util.Properties; 

import org.hibernate.cfg.AnnotationConfiguration; 
import org.hibernate.dialect.Dialect; 
import org.hibernate.ejb.Ejb3Configuration; 

/** 
* SQL Creator for Tables according to JPA/Hibernate annotations. 
* 
* Use: 
* 
* {@link #createTablesScript()} To create the table creationg script 
* 
* {@link #dropTablesScript()} to create the table destruction script 
* 
*/ 
public class SqlTableCreator { 

    private final AnnotationConfiguration hibernateConfiguration; 
    private final Properties dialectProps; 

    public SqlTableCreator(final Collection> entities) { 

     final Ejb3Configuration ejb3Configuration = new Ejb3Configuration(); 
     for (final Class entity : entities) { 
      ejb3Configuration.addAnnotatedClass(entity); 
     } 

     dialectProps = new Properties(); 
     dialectProps.put("hibernate.dialect", "org.hibernate.dialect.SQLServerDialect"); 

     hibernateConfiguration = ejb3Configuration.getHibernateConfiguration(); 
    } 

    /** 
    * Create the SQL script to create all tables. 
    * 
    * @return A {@link String} representing the SQL script. 
    */ 
    public String createTablesScript() { 
     final StringBuilder script = new StringBuilder(); 

     final String[] creationScript = hibernateConfiguration.generateSchemaCreationScript(Dialect 
       .getDialect(dialectProps)); 
     for (final String string : creationScript) { 
      script.append(string).append(";\n"); 
     } 
     script.append("\ngo\n\n"); 

     return script.toString(); 
    } 

    /** 
    * Create the SQL script to drop all tables. 
    * 
    * @return A {@link String} representing the SQL script. 
    */ 
    public String dropTablesScript() { 
     final StringBuilder script = new StringBuilder(); 

     final String[] creationScript = hibernateConfiguration.generateDropSchemaScript(Dialect 
       .getDialect(dialectProps)); 
     for (final String string : creationScript) { 
      script.append(string).append(";\n"); 
     } 
     script.append("\ngo\n\n"); 

     return script.toString(); 
    } 
} 

+2

cela vous obligeait à avoir l'objet de domaine afin de convertir en script SQL droit? ce que je veux c'est. connectez-vous au serveur de base de données et répertoriez toutes les tables, puis générez le script create tables. possible? – cometta

+0

Vous avez besoin des entités (dans perstiance.xml ou dans une liste .) Sinon, vous pouvez utiliser liquibase, qui exporte un schéma ddl incluant les données d'une connexion jdbc donnée. patcher ...). Une autre façon est d'utiliser le couteau suisse DBVisualizer au travail notre favori absolu (en édition personnelle gratuite !, écrit en Java utilise JDBC) – H2000

+0

salut, j'ai essayé d'utiliser dbvisualizer, je peux voir – cometta

Questions connexes