Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从java代码为我的jpa实体创建ddl?_Java_Hibernate_Jpa_Ddl - Fatal编程技术网

如何从java代码为我的jpa实体创建ddl?

如何从java代码为我的jpa实体创建ddl?,java,hibernate,jpa,ddl,Java,Hibernate,Jpa,Ddl,我在寻找一种方法,如何为我的jpa注释实体创建ddl。 我更喜欢纯java方式 如果可能,也可以生成drop语句。将数据库中的数据导出为sql 使用开源项目 LiquiBase是一个开源(LGPL)的独立于数据库的库,用于跟踪、管理和应用数据库更改。它建立在一个简单的前提之上:所有数据库更改(结构和数据)都以基于XML的描述性方式存储,并检查到源代码管理中 为给定JPA实体生成创建和删除脚本 我们使用此代码生成drop和create语句: 只要用所有实体类构造这个类,并调用create/drop

我在寻找一种方法,如何为我的jpa注释实体创建ddl。 我更喜欢纯java方式


如果可能,也可以生成drop语句。

将数据库中的数据导出为sql

使用开源项目

LiquiBase是一个开源(LGPL)的独立于数据库的库,用于跟踪、管理和应用数据库更改。它建立在一个简单的前提之上:所有数据库更改(结构和数据)都以基于XML的描述性方式存储,并检查到源代码管理中

为给定JPA实体生成创建和删除脚本

我们使用此代码生成drop和create语句: 只要用所有实体类构造这个类,并调用create/dropTableScript

如果需要,可以使用persistence.xml和persistence单元名称。说点什么 我也发代码

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(); } } 导入java.util.Collection; 导入java.util.Properties; 导入org.hibernate.cfg.AnnotationConfiguration; 导入org.hibernate.dialogue.dialogue; 导入org.hibernate.ejb.ejb3配置; /** *根据JPA/Hibernate注释创建表的SQL创建者。 * *使用: * *{@link#createTablesScript()}来创建表创建脚本 * *{@link#dropTablesScript()}创建表销毁脚本 * */ 公共类SqlTableCreator{ 私有最终注释配置休眠配置; 私人最终财产和道具; 公共SqlTableCreator(最终集合>实体){ 最终Ejb3Configuration Ejb3Configuration=新Ejb3Configuration(); for(最终类实体:实体){ ejb3Configuration.addAnnotatedClass(实体); } 方言道具=新属性(); dialogprops.put(“hibernate.dialogue”、“org.hibernate.dialogue.sqlserverdialogue”); hibernateConfiguration=ejb3Configuration.getHibernateConfiguration(); } /** *创建SQL脚本以创建所有表。 * *@return一个{@link String}表示SQL脚本。 */ 公共字符串createTablesScript(){ 最终StringBuilder脚本=新建StringBuilder(); 最后一个字符串[]creationScript=hibernateConfiguration.generateSchemaCreationScript(方言) .getdial(方言道具); for(最终字符串:creationScript){ script.append(string.append(;\n”); } script.append(“\ngo\n\n”); 返回script.toString(); } /** *创建SQL脚本以删除所有表。 * *@return一个{@link String}表示SQL脚本。 */ 公共字符串dropTablesScript(){ 最终StringBuilder脚本=新建StringBuilder(); 最后一个字符串[]creationScript=hibernateConfiguration.generateDropSchemaScript(方言) .getdial(方言道具); for(最终字符串:creationScript){ script.append(string.append(;\n”); } script.append(“\ngo\n\n”); 返回script.toString(); } }
将数据库中的数据导出为sql

使用开源项目

LiquiBase是一个开源(LGPL)的独立于数据库的库,用于跟踪、管理和应用数据库更改。它建立在一个简单的前提之上:所有数据库更改(结构和数据)都以基于XML的描述性方式存储,并检查到源代码管理中

为给定JPA实体生成创建和删除脚本

我们使用此代码生成drop和create语句: 只要用所有实体类构造这个类,并调用create/dropTableScript

如果需要,可以使用persistence.xml和persistence单元名称。说点什么 我也发代码

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(); } } 导入java.util.Collection; 导入java.util.Properties; 导入org.hibernate.cfg.AnnotationConfiguration; 导入org.hibernate.dialogue.dialogue; 导入org.hibernate.ejb.ejb3配置; /** *根据JPA/Hibernate注释创建表的SQL创建者。 * *使用: * *{@link#createTablesScript()}来创建表创建脚本 * *{@link#dropTablesScript()}创建表销毁脚本 * */ 公共类SqlTableCreator{ 私有最终注释配置休眠配置; 私人最终财产和道具; 公共SqlTableCreator(最终集合>实体){ 最终Ejb3Configuration Ejb3Configuration=新Ejb3Configuration(); for(最终类实体:实体){ ejb3Configuration.addAnnotatedClass(实体); } 方言道具=新属性(); dialogprops.put(“hibernate.dialogue”、“org.hibernate.dialogue.sqlserverdialogue”); hibernateConfiguration=ejb3Configuration.getHibernateConfiguration(); } /** *创建SQL脚本以创建所有表。 * *@return一个{@link String}表示SQL脚本。 */ 公共字符串createTablesScript(){ 最终StringBuilder脚本=新建StringBuilder(); 最后一个字符串[]creationScript=hibernateConfiguration.generateSchemaCreationScript(方言) .getdial(方言道具); for(最终字符串:creationScript){ script.append(string.append(;\n”); } script.append(“\ngo\n\n”); 返回script.toString(); } /** *创建SQL脚本以删除所有表。 * *@return一个{@link String}表示SQL脚本。 */ 公共字符串dropTablesScript(){ 最终StringBuilder脚本=新建StringBuilder(); 最后一个字符串[]creationScript=hibernateConfiguration.generateDropSchemaScript(方言) .getdial(方言道具); for(最终字符串:creationScript){ script.append(string.append(;\n”); } script.append(“\ngo\n\n”); 返回脚本.t