java mysql ddl_如何从Java代码为jpa实体创建ddl?

小编典典

将数据从数据库导出为sql

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

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

我们使用以下代码生成drop和create语句:只需使用所有实体类构造该类,然后调用create / dropTableScript。

如果需要,可以改用persitence.xml和持久性单元名称。只是说些什么,我也会发布代码。

导入java.util.Collection;

导入java.util.Properties;

导入org.hibernate.cfg.AnnotationConfiguration;

导入org.hibernate.dialect.Dialect;

导入org.hibernate.ejb.Ejb3Configuration;

/ **

*根据JPA / Hibernate批注的SQL Creator for Tables。

*

* 采用:

*

* {@link #createTablesScript()}创建表创建脚本

*

* {@link #dropTablesScript()}创建表销毁脚本

*

* /

公共类SqlTableCreator {

私有最终的AnnotationConfiguration hibernateConfiguration;

私有的最终Properties DialectProps;

公开SqlTableCreator(最终收藏>实体){

最后的Ejb3Configuration ejb3Configuration = new Ejb3Configuration();

for(最终类别实体:entities){

ejb3Configuration.addAnnotatedClass(entity);

}

DialectProps = new Properties();

DialectProps.put(“ hibernate.dialect”,“ org.hibernate.dialect.SQLServerDialect”);

hibernateConfiguration = ejb3Configuration.getHibernateConfiguration();

}

/ **

*创建SQL脚本以创建所有表。

*

* @return表示SQL脚本的{@link String}。

* /

公共字符串createTablesScript(){

最终的StringBuilder脚本= new StringBuilder();

最后的String [] creationScript = hibernateConfiguration.generateSchemaCreationScript(Dialect

.getDialect(dialectProps));

for(最终字符串字符串:creationScript){

script.append(string).append(“; \ n”);

}

script.append(“ \ ngo \ n \ n”);

返回script.toString();

}

/ **

*创建SQL脚本以删除所有表。

*

* @return表示SQL脚本的{@link String}。

* /

公共字符串dropTablesScript(){

最终的StringBuilder脚本= new StringBuilder();

最后的String [] creationScript = hibernateConfiguration.generateDropSchemaScript(Dialect

.getDialect(dialectProps));

for(最终字符串字符串:creationScript){

script.append(string).append(“; \ n”);

}

script.append(“ \ ngo \ n \ n”);

返回script.toString();

}

}

2020-06-20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值