java - 更新数据库记录的最佳实践

标签 java database hibernate sql-update

假设您检索 100 条记录,并将它们显示在一个页面上。用户仅更新页面上的 2 条记录。现在您只想更新这两条记录,而不是其他 98 条记录。

是否最好在页面上提交一个,然后以某种方式知道更新了哪两个,然后仅将这两个发送到数据库以进行更新?

“不知何故”是什么样子的?

或者,您是否可以为每一行设置一个更新提交按钮,并且只更新与其关联的记录?

最佳答案

当然,您可以通过不同的方式来做到这一点。通常,您可以通过使用 Javascript 仅为已更改的记录组装 POST 数据来为自己省去一些麻烦和服务器端处理。关于这可能如何工作的两个想法:

1) 走 ajax 路线并进行实时编辑。因此记录显示在表格中并且看起来是不可编辑的。当用户单击特定行时,通过使用 Javascript 动态创建适当的 html 表单,该行变为可编辑状态。然后有一个提交按钮或一些其他处理程序(例如,将焦点移动到另一个表行),这将触发更新数据库的 POST(通过您首选的 ajax 方法异步)。令人高兴的是,主流 Javascript 框架可以在这方面提供很大帮助。

2) 复选框 - 每当一行被编辑时,它的复选框就会被选中。单击提交按钮时,使用 javascript 通过抓取选中复选框的行中的所有内容来发布 POST 数据。用户可以在提交前取消选中复选框以取消对该行的更改。

关于java - 更新数据库记录的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/620551/

相关文章:

java - JavaFX WebEngine 上的 UserAgent 实现方法

php - 将数据插入 MongoDB 中的内部数组

php - Laravel:如何使用多个数据透视表关系

postgresql - SQL 命中约束时 Hibernate 的语义异常

java - Hibernate 级联删除期间的 ConstraintViolationException

java - Runtime.getRuntime().exec 中出现 NullPointerException 错误

java - 我可以使用多个具有不同 JDK 版本的 spring-boot 容器吗?

java - Hibernate Temporal.TIMESTAMP 映射到没有毫秒的 mysql 日期时间

java - 强引用类

java - 我的 SQLite 数据库中的上下文有问题,但我找不到它。 (使用 SQLiteAssetHelper)