我有一个基于Maven的项目,它使用Hibernate和Postgres(没有Spring)。
我想使用Liquibase进行数据库迁移。理想情况下,我想要以下工作流程:
>
我添加了带有适当注释的实体类。我生成一个diff更改集(mvn liquibase: diff?)并将其输入存储库。
现在,我的团队中的每个人都从存储库中提取并运行一些东西(mvn更新?)以获取数据库的最新副本。
我根据需要重复前面的两个步骤。我知道Liquibase应该支持这种开发工作流程。问题是,有很多活动部件,我正努力将它们连接在一起
例如,如何在Maven中配置Liquibase?在liquibase.properties?如何指定我的变更集要存储在哪里?,如何创建初始“变更集”?我知道变更集可以是不同的格式,(XML、JSON等等)有什么利弊,它们可以简单地SQL吗?
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配置文件中: 前两行运行正常,可以在调试日志中看到,但是当我添加第三行时,我无法运行应用程序。我也尝试过用代码添