Java数据库迁移模式?
我正在用Java编写一些数据库迁移代码。我也使用工厂模式,所以我可以使用不同类型的数据库。im使用的每种数据库都实现了一个通用接口 我想做的是在类内部进行迁移检查,并自动运行一些数据库模式更新代码。实际的更新非常简单(我在一个表中检查模式版本,并与我的应用程序中的一个常量进行比较,以决定是否迁移以及在模式的哪个版本之间迁移) 为了实现自动化,我认为测试应该在构造函数内部(或从构造函数调用)。好吧,很公平,很简单。我的问题是,我不希望每次实例化一个数据库对象时都运行测试(它运行一个查询,所以让它在每个构造上运行是没有效率的)。所以,也许这应该是一个类静态方法?我想我的问题是,对于这类问题,什么是好的设计模式?应该有一种干净的方法来确保迁移测试只运行一次或超级高效。看看。Java数据库迁移模式?,java,database,migration,design-patterns,Java,Database,Migration,Design Patterns,我正在用Java编写一些数据库迁移代码。我也使用工厂模式,所以我可以使用不同类型的数据库。im使用的每种数据库都实现了一个通用接口 我想做的是在类内部进行迁移检查,并自动运行一些数据库模式更新代码。实际的更新非常简单(我在一个表中检查模式版本,并与我的应用程序中的一个常量进行比较,以决定是否迁移以及在模式的哪个版本之间迁移) 为了实现自动化,我认为测试应该在构造函数内部(或从构造函数调用)。好吧,很公平,很简单。我的问题是,我不希望每次实例化一个数据库对象时都运行测试(它运行一个查询,所以让它在
这里有一篇ibm developerworks文章,它有一个很好的走查功能,请看。
这里有一篇IBMdeveloperWorks文章,它有一个很好的遍历性我一直在使用iBATISSQLMapper,并且非常喜欢它。下一个版本iBATIS3.0已经发布。这仍然是测试版,但我计划在它接近发布候选版本时使用它。我一直在使用iBatis SQL Mapper,非常喜欢它。下一个版本iBATIS3.0已经发布。这仍然是测试版,但我计划在它接近发布候选版本时使用它。Flyway非常适合您的需要。它支持多个数据库,将模式版本与类路径上的可用迁移进行比较,并相应地升级数据库 您可以将其嵌入到应用程序中,并在启动时运行一次,如中所述 注意:Flyway还附带了一个Maven插件,能够在开发过程中出错时清理现有模式
[免责声明:我是Flyway的开发者之一]Flyway完全符合您的需求。它支持多个数据库,将模式版本与类路径上的可用迁移进行比较,并相应地升级数据库 您可以将其嵌入到应用程序中,并在启动时运行一次,如中所述 注意:Flyway还附带了一个Maven插件,能够在开发过程中出错时清理现有模式
[免责声明:我是Flyway的开发者之一]如果您有一个可以在上面运行的单片应用程序,那么LiquiBase是一个很好的工具。因为最常见的情况确实如此,所以这不是问题。如果您有一个单一的单片应用程序可以在其上运行,那么LiquiBase是一个很好的工具。因为最常见的情况是这样的,这不是问题。这看起来很有趣-我必须检查一下。这看起来很有趣-我必须检查一下。