2009-06-30 3 views
6

есть ли hibernate utitliy, который я могу использовать для подключения к базе данных. перечислить все таблицы и сгенерировать SQL-скрипт для «создания таблиц + данных» и сохранить как * .sql?генерировать sql-скрипты

ответ

7

Экспорт данных из базы данных как SQL

использовать проект liquibase OpenSource

LiquiBase является открытым исходным кодом (LGPL), базы данных независимой библиотеки для отслеживания, управления и применения изменений в базе данных. Он построен на простой предпосылке: все изменения базы данных (структура и данные) хранятся в описательной форме на основе XML и проверяются на контроль источника.

Сформировать создавать и удалять скрипт для данных JPA сущностей

Мы используем этот код, чтобы генерировать капли и создавать операторы: Просто построить этот класс со всеми классами сущностей и вызвать создание/dropTableScript.

При необходимости вы можете вместо этого использовать имя persitence.xml и persitance. Просто скажите что-нибудь , и я также отправлю код.

 
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

Для этого требуется, чтобы у вас был объект домена, чтобы преобразовать в sql-скрипт правильно? что я хочу. просто подключитесь к серверу базы данных и перечислите все таблицы и создайте сценарий создания таблиц. возможное? – cometta

+0

Правильно, вам нужны enities (в perstiance.xml или в списке > Кроме того, вы можете использовать Liquibase, которая экспортирует данные с включенной ddl-схемой из данного соединения jdbc. Он может делать гораздо больше думает (схема отличается, исправление ...) Другой способ - использовать швейцарский армейский нож DBVisualizer на работе нашего любимого абсента (в личном издании бесплатно !, написанный в java, использует JDBC). – H2000

+0

привет, я попытался использовать dbvisualizer, я могу видеть -> table, view "для моей базы данных. Как экспортировать таблицы и данные в sql-скрипт? – cometta