回答
从数据库导出数据,SQL
使用liquibase开源项目
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(); } }
感谢您的回答,是否可以使用persistence.xml? – 2009-06-30 17:45:56
Hibernate内置了对此的支持。见org.hibernate.tool.hbm2ddl.SchemaExport。
OpenJPA的支持这个功能了。 OpenJPA mapping tool可以创建脚本或创建ddl文件。 ddl应该与其他JPA实现一起工作(尽管每个供应商都有一些怪癖)。
如果您正在使用的OpenJPA作为持久性提供可配置的OpenJPA创建表他们通过将SynchronizeMappings属性persistence.xml中所需要的第一次。
实施例:
<persistence-unit name="test">
<!--
. . .
-->
<properties>
<property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema"/>
</properties>
<!--
. . .
-->
</persistence-unit>
DataNucleus将具有SchemaTool可以调用从Java,或从命令行。它做什么,你需要
--Andy(DataNucleus)
这里有一个如何使用Hibernate的SchemaExport类做你想要什么的交代。
http://jandrewthompson.blogspot.com/2009/10/how-to-generate-ddl-scripts-from.html
希望这有助于。
- 1. 如何让Java JPA创建实体?
- 2. 逆向工程从JPA实体DDL
- 3. JPA:每当创建另一个实体时创建一个实体
- 4. CoreData:创建一个新实体作为旧实体的父代
- 5. 使用Jersey从一个JSON创建多个JPA持久实体?
- 6. 如何自我加入实体以使用JPA创建一组实体?
- 7. JPA - 如何DDL
- 8. JPA 2.1在JPA EntityListener中创建实体
- 9. 如何从java代码创建log4j2 appender?
- 10. Java hibernate/jpa如何创建自我相关的动态通用实体
- 11. 如何创建一个新的实体
- 12. 如何创建Java代码
- 13. 如何创建Java代码
- 14. 如何使用JPA(Hibernate)创建与同一实体的关系?
- 15. 创建一个新表实体框架代码第一模式
- 16. 如何阻止eclipse从表中自动创建JPA实体?
- 17. 实体框架代码第一:如何为这种关系创建一对多?
- 18. 如何为实体创建多个表?
- 19. 我的Java代码显示一个编译器错误,当我为我上面的Java代码创建方法
- 20. 如何为JPA实体类禁用SQL创建
- 21. JPA OneToOne和OneToMany实体实例/创建
- 22. 我如何为这段代码创建一个头文件?
- 23. 如何使用嵌入的JPA和JavaDB从Java代码创建数据库表?
- 24. 如何创建一个实体和org.hibernate.usertype.UserType
- 25. 为Java代码创建UML
- 26. 为Java代码创建MSI
- 27. 从数据库为JPA实体自定义代码生成
- 28. JPA /休眠为DDL
- 29. 从java代码创建多个httpServletRequest
- 30. java代码创建一个组合的唯一代码
这是http://stackoverflow.com/questions/297438/auto-generate-data-schema-from-jpa-annotated-entity-classes重演。 – stevedbrown 2009-06-30 18:07:21