我有一个通过hibernate使用数据库的Java应用程序(通用)。我通过jar运送给客户。将数据库更新(架构和数据)发送给客户端的最佳方法是哪种? 考虑客户端可以拥有不同版本的应用程序,并且更新必须是自动的,无需用户支持。 如果申请是用grails写的?
答案 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提及了几个可能会完成一些艰苦工作的图书馆:LiquiBase和DbMigrate。
答案 2 :(得分:0)
您可以在发行版中发布Ruby和Active Record Migrations,让更新程序执行新的迁移。
答案 3 :(得分:0)
有一个称为tapestry5-db-migrations的rails迁移的Java端口(仅依赖于tapestry5 ioc)