当前位置: 首页 > 知识库问答 >
问题:

用Hibernate连接maven和liquibase?

方绪
2023-03-14

我有一个基于Maven的项目,它使用Hibernate和Postgres(没有Spring)。

我想使用Liquibase进行数据库迁移。理想情况下,我想要以下工作流程:

>

我添加了带有适当注释的实体类。我生成一个diff更改集(mvn liquibase: diff?)并将其输入存储库。

现在,我的团队中的每个人都从存储库中提取并运行一些东西(mvn更新?)以获取数据库的最新副本。

我根据需要重复前面的两个步骤。我知道Liquibase应该支持这种开发工作流程。问题是,有很多活动部件,我正努力将它们连接在一起

例如,如何在Maven中配置Liquibase?在liquibase.properties?如何指定我的变更集要存储在哪里?,如何创建初始“变更集”?我知道变更集可以是不同的格式,(XML、JSON等等)有什么利弊,它们可以简单地SQL吗?

共有1个答案

壤驷华美
2023-03-14

liquibase有一个maven插件,可以通过基于maven的解决方案实现这一点。

http://www.liquibase.org/documentation/maven/generated/update-mojo.html

然后你可以运行你的maven构建与目标liquibase:更新

例如,如果你想连接到mysql DB(liquibase支持许多不同的数据库

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
    </dependencies>





<build>
    <plugins>
        <plugin>
            <groupId>org.liquibase</groupId>
            <artifactId>liquibase-maven-plugin</artifactId>
            <version>3.4.1</version>
            <configuration>
                <promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
                <changeLogFile>${changelog}</changeLogFile>
                <driver>com.mysql.jdbc.Driver</driver>
                <url>jdbc:mysql://${mysql.host}:${mysql.port}/${mysql.schema}</url>
                <username>${mysql.username}</username>
                <password>${mysql.password}</password>
            </configuration>
        </plugin>
    </plugins>
</build>

我们也可以与hibernate集成,github中有一个项目,请查看他们通过hibernate进行集成的文档。

https://github.com/liquibase/liquibase-hibernate/releases

希望这回答了你的问题

编辑:

liquibase --driver=oracle.jdbc.OracleDriver \
      --classpath=\path\to\classes:jdbcdriver.jar \
      --changeLogFile=com/example/db.changelog.xml \
      --url="jdbc:oracle:thin:@localhost:1521:XE" \
      --username=scott \
      --password=tiger \
      generateChangeLog

这将为现有数据库生成变更日志。

参考-http://www.liquibase.org/documentation/generating_changelogs.html

参考-http://bytefilia.com/managing-database-schema-changes-liquibase-existing-schema/

请注意,这个命令目前有一些限制。它不导出以下类型的对象:存储过程、函数、包触发器

 类似资料:
  • 我遵循了一个教程,使用Struts2、Maven、Hibernate和Spring创建一个带有Mysql数据库的项目:http://www.mkyong.com/struts2/struts-2-spring-hibernate-integration-example/ 它正在工作,我现在想使用一个Postgresql数据库。为此,我编辑了一些配置文件,通过postgresql删除mysql配置:

  • 我有一个简单的JPA实体(Hibernate实现),它有一个急切获取的关系: 使用者爪哇: 用户状态: 为查找实体而生成的查询如下所示: 我的问题是:为什么Hibernate执行这个外部连接而不是内部连接(因为我已经告诉它它不可为null或可选)。有没有办法强制内部连接? 谢谢

  • 问题内容: 我似乎无法hibernate使用c3p0进行连接池,它说 hibernate配置: 问题答案:

  • 以下代码: hibernate.cfg.xml: hibernateutil.java: 为了获得最好的帮助,当我尝试连接this Web服务时,请在Android Studio中查看my应用程序的日志: org.hibernate.exception.internal.standardsqlexceptionconverter.convert(standardsqlexceptionconver

  • 另一个宽大处理--B: 这里要注意,实体A和B之间没有隐式关系,B表中的a_id是手工处理的,因此--关系类似于一对多(A-->B),但不是jpa-hibernate关系。而且,我的FullDto有A的所有属性和B的列表: 现在,我想从A的存储库接口中提取所有内容(A和B表一次完成),如下所示:

  • 是否可以在2.3.9版本中启用泄漏检测?正如我之前在这个问题中所说,HiberNate使用的是HikariCP的2.3.3版本。截至2016年2月,他们已经升级了HikariCP的版本,但不幸的是升级到了2.3.9版本 我需要启用泄漏检测才能修复它们。我已将以下行添加到Hibernate配置文件中: 前两行运行正常,可以在调试日志中看到,但是当我添加第三行时,我无法运行应用程序。我也尝试过用代码添