如何发送数据库更新?

时间:2010-09-21 17:24:51

标签: java hibernate grails

我有一个通过hibernate使用数据库的Java应用程序(通用)。我通过jar运送给客户。将数据库更新(架构和数据)发送给客户端的最佳方法是哪种? 考虑客户端可以拥有不同版本的应用程序,并且更新必须是自动的,无需用户支持。 如果申请是用grails写的?

4 个答案:

答案 0 :(得分:3)

您可以通过跟踪当前架构版本(即版本号)然后使用补丁文件将架构升级到下一版本来完成此操作。您可以继续逐步应用修补程序,直到达到新的prod / update版本。

E.g。 假设客户端处于修订版5.您已经发布了修订版10和12,但他只更新了最新的版本 - 15.

你可以这样做:

foreach rev in [clientRev ... currentRev]:
   apply rev.patch

所以你将应用补丁来达到转速10;然后另一个把它带到转速12;然后另一个把它带到转速15;

如果另一个客户已经在转12号,他们只需要应用最后一个补丁。

答案 1 :(得分:2)

正如@ user779所说,保持每种变化的某种格式是要走的路。 Grails documentation提及了几个可能会完成一些艰苦工作的图书馆:LiquiBaseDbMigrate

答案 2 :(得分:0)

您可以在发行版中发布Ruby和Active Record Migrations,让更新程序执行新的迁移。

答案 3 :(得分:0)

有一个称为tapestry5-db-migrations的rails迁移的Java端口(仅依赖于tapestry5 ioc)

https://github.com/spreadthesource/tapestry5-db-migrations/