Hibernate 对数据库(在这种情况下为 MySQL)有哪些变化(数据、模式、...)?
我问这个是因为 Hibernate 的停机时间为零。
更改数据库,将应用服务器拆分为两个集群,在其中一个集群上重新部署应用程序并切换应用程序。
谢谢斯蒂芬
Hibernate 对数据库(在这种情况下为 MySQL)有哪些变化(数据、模式、...)?
我问这个是因为 Hibernate 的停机时间为零。
更改数据库,将应用服务器拆分为两个集群,在其中一个集群上重新部署应用程序并切换应用程序。
谢谢斯蒂芬
我将根据个人经验而不是对休眠的任何特殊见解来回答这个问题。所以把这个和一粒盐一起吃。似乎还有一个模糊的问题,请在适当的地方添加评论。:)
首先,更改/添加/删除未在 hibernate 中映射的模式的内容永远不会导致任何问题。hibernate 真正做的就是生成查询,因为它将很多东西转换为 SQL,只要这些查询继续工作,你的应用程序就会继续工作。这意味着向表中添加列或添加表不是问题,删除未映射的列也不是问题等等。
更成问题的是对映射内容的更改。假设您将数字(10,0)更改为数字(11,0),这通常会起作用。如果您开始做一些事情,比如将 CHAR(1) 字段更改为 BIT 字段或类似的东西,您将需要在您的休眠映射中进行某些更改,这将使现有部署失败。这是常识。如果您确实必须进行这样的更改,那么在常规数据库服务器上执行 ALTER TABLE 可能无论如何都会锁定表,因此重新启动应用程序不是您最大的问题。
在高可用性下处理主要的模式变化并不是 hibernate 直接处理的事情。Hibernate 假设一个传统的关系数据库,其中模式更改通常非常昂贵。
您提到的其他三个问题: