6
是否有任何休眠utitliy,我可以使用連接到數據庫。列出所有表格,並生成「創建表格+數據」的sql腳本並保存爲* .sql?生成SQL腳本
是否有任何休眠utitliy,我可以使用連接到數據庫。列出所有表格,並生成「創建表格+數據」的sql腳本並保存爲* .sql?生成SQL腳本
從數據庫導出數據,SQL
使用liquibase開源項目
LiquiBase是一個開源(LGPL),用於跟蹤,管理和應用數據庫更改數據庫無關的庫。它建立在一個簡單的前提上:所有數據庫更改(結構和數據)都以基於XML的描述性方式進行存儲並簽入源代碼管理。
生成創建和給定的JPA實體
我們使用此代碼生成下降和創建報表下降腳本: 就構建這個類的所有實體類,並調用創建/ dropTableScript。
如果需要,您可以使用persitence.xml和persives單位名稱。只要說一下 ,我也會發布代碼。
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(); } }
這需要你有域對象才能轉換爲sql腳本嗎?我想要的是。只需連接到數據庫服務器並列出所有表,並生成創建表腳本。可能? – cometta 2009-07-02 00:57:53