当前位置: 首页 > 面试题库 >

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

卢书
2023-03-14
问题内容

我寻找一种方法来为我的jpa注释实体创建ddl。我更喜欢纯Java方式。

如果可能的话,最好也生成drop语句。


问题答案:

将数据从数据库导出为sql

使用liquibase开源项目

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();
    }
}


 类似资料:
  • Java类可以很容易地转换成实体。 对于实体转换,基本要求是 - 无参数构造函数 注解 在这里,我们将学习如何通过示例,学习将常规Java类转换为实体类 - 简单的一个学生类(Student),代码如下 - 上面的类是一个常规的java类,有三个属性: , 和 。要将此类转换为实体,请在此类中添加和注解。 - 这是一个标记注释,表明这个类是一个实体。这个注释必须放在类名称上。 - 此注释位于持有持

  • 我需要为应用程序中的不同对象实例创建单独的日志。例如,如果我们处理书籍,我需要为每本书创建单独的日志文件。它可以与log4j2配合使用。xml文件,但我的内存中可能有数百个这样的对象,我不想创建这么长的配置文件。我想从代码中创建appender和logger。我查找了工作代码示例,但什么也没找到。 我尝试使用RollingFileAppender。createAppender,但未找到如何将其附加

  • 我正在使用Swagger codegen创建用于Spring REST服务器的Java模型,并且想知道如何让Swagger将每个模型声明为JPA实体。 我使用< code > swagger-codegen-maven-plugin 生成如下代码: 正如我现在所拥有的,这是生成的缩写 java 代码: 如何让 Swagger 添加 @Entity 和 @Id JPA 注释,如下所示? 这样,为了让

  • 所以我从JDBC转移到JPA,我从我的schema.sql文件中删除了“创建表”sql语句,所以现在这个文件看起来像这样: 我的实体,成员。课堂上,是这样的: 以下是我得到的例外: 如您所见,它表示找不到表成员。如果我将“createtablemember”sql语句带回模式。sql文件,也不例外 我在Eclipse上使用Spring Boot。 谢谢!

  • 我有个问题。当我有其他实体时,我不知道如何创建API。我与邮递员工作,当我做一个请求,以看到所有项目从数据库,我想收到实体也。 例如,这是我的实体:

  • 问题内容: 我的JPA / Hibernate应用程序中有几个映射的对象。在网络上,我收到的数据包代表这些对象的更新,或者实际上可能完全代表新的对象。 我想写一个像 如果数据库中存在一个带有pk primaryKey的对象,则该对象将返回所提供类的一个对象,否则将创建该类的新对象,并将其持久化并返回。 接下来我将要处理的对象是在事务中更新其所有字段。 在JPA中是否有惯用的方法来执行此操作,还是有