2009-06-30 10 views
6

czy istnieje jakaś możliwość hibernacji, której można użyć do połączenia z bazą danych. wyświetlić wszystkie tabele i wygenerować skrypt SQL dla "tworzenia tabel + danych" i zapisać jako * .sql?generowanie skryptów sql

Odpowiedz

7

Eksport danych z bazy danych jak sql

obsługi projektowi liquibase opensource

LiquiBase jest open source (LGPL), baza danych niezależne biblioteki do śledzenia, zarządzania i stosowania zmian w bazie danych. Jest zbudowany na prostym założeniu: Wszystkie zmiany w bazie danych (struktura i dane) są przechowywane w sposób opisowy oparty na XML i sprawdzane w kontroli źródła.

Generowanie tworzyć i upuść skrypt dla danych podmiotów WZP

Używamy ten kod, aby wygenerować kropli i tworzenie sprawozdań: Wystarczy zbudować tę klasę z wszystkich klas encji i wywołać tworzenie/dropTableScript.

W razie potrzeby można zamiast tego użyć nazwy persitence.xml i persitance unit. Po prostu powiedz coś: , a ja też publikuję kod.

 
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

wymagało to, aby obiekt domeny został przekonwertowany na skrypt sql? czego chcę. wystarczy połączyć się z serwerem bazy danych i wyświetlić wszystkie tabele oraz wygenerować skrypt tabel tworzenia. możliwy? – cometta

+0

Po prawej potrzebujesz enities (w perstiance.xml lub na liście >. Inaczej możesz użyć liquibase, która eksportuje dane schematu ddl włącznie z danego połączenia jdbc.Może on o wiele więcej myśleć (schematu diffing, łatanie ...). Innym sposobem jest użycie szwajcarskiego scyzoryka DBVisalizer w pracy naszego ulubionego absoulte (w osobistym wydaniu za darmo !, napisane w Javie używa JDBC) – H2000

+0

cześć, próbowałem użyć dbvisualizer, widzę -> tabela, widok "dla mojej bazy danych, jak eksportować tabele i dane do skryptu sql? – cometta

Powiązane problemy