Java JPA,如何在没有销毁创建的情况下更新表?

Posted

技术标签:

【中文标题】Java JPA,如何在没有销毁创建的情况下更新表?【英文标题】:Java JPA, How to do Updates to a table without destroy-create? 【发布时间】:2010-10-21 20:50:46 【问题描述】:

我正在学习一些 JPA 来教一些 java 朋友,我想知道,你如何处理在 JPA 中创建数据库之后的更新?假设我有一个生产环境,其中有我不能丢失的数据。

出现了一些变化,如何将其应用到我的生产环境中? JPA 是否有办法只更新数据库上的更改?

或者我需要手动创建一个 SQL 脚本来更新我的数据库吗?

还有其他选择吗?

[]的 罗德里戈·德拉夸

【问题讨论】:

【参考方案1】:

发生了一些变化,我如何将其应用到我的生产环境中? JPA 是否有办法只更新数据库上的更改?

没有标准化。换句话说,这将是提供商特定的功能。例如,Hibernate 有一个 SchemaUpdate 工具,可以(理论上)安全地更新数据库模式。在实践中,many don't use that on a production database(包括我)。

或者我需要手动创建一个 SQL 脚本来更新我的数据库吗?

使用迁移脚本(也可能是 database migration tool)是 IMO 处理此问题的安全方法,并且是进行实际项目的方法。

同样,某些迁移工具可能会为给定的 JPA 提供程序提供支持。例如,liquibase 确实提供了Hibernate support 和can diff your Entities against a database to generate a change script。

【讨论】:

以上是关于Java JPA,如何在没有销毁创建的情况下更新表?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用更新的 JPA 时间戳字段升级数据库?

Spring JPA:如何在不丢失数据的情况下进行更新插入

如何在没有 ComponentFactory 的情况下销毁 Angular 2 组件?

如何使用嵌入的 JPA 和 JavaDB 从 Java 代码创建数据库表?

如何让实体框架在不保存对象的情况下创建/更新数据库表

如何将ACCESS的表和查询创建成动态的WEB?