使用休眠和弹簧更新
Posted
技术标签:
【中文标题】使用休眠和弹簧更新【英文标题】:Updating using hibernate and spring 【发布时间】:2016-07-09 00:40:08 【问题描述】:我在数据库中有表怀疑,使用休眠逆向工程我创建了一个 bean。我需要制作一个表格来更新这个嫌疑人。
我所做的是:
我。获取可疑行(基于使用休眠的 id)
二。设置在一个可疑的命名对象中。
三。将其作为弹簧形式的命令对象传递。
表格中的数据显示成功。
表中有一些字段是我通过一些逻辑硬编码设置的。这些字段在表单标签中不存在。所以当我保存(在休眠中使用更新功能)这个表单时。它将这些列的值设置为空。
现在我觉得可能有两种解决方案:
-
在更新表单中为所有此类字段创建隐藏字段或
在更新时再次对其进行硬编码。
哪个更好,还有其他方法吗?
【问题讨论】:
【参考方案1】:还有其他方法吗?
更适合您的方式是在您的数据库或hibernate like in this question 中使用默认值:
如果你不想要数据库默认值,而只是一个默认值 在你的 Java 代码中,像这样初始化你的变量
会清理代码,让逻辑更清晰:
private Integer myColumn = 100;
不管怎样,回答你的问题:)
哪个更好?
取决于应用需求。
在更新表单中为所有此类字段创建隐藏字段
如果获取此字段的逻辑计算成本较高,您可以使用隐藏字段来节省此计算成本,但这似乎不是您的问题,只要您对这些数据进行编码即可。
在更新时再次对其进行硬编码。
硬编码永远不是学术编程之外的选择,但如果更新的字段可以使这个固定值被改变,你最好的选择是在之前再次生成这个字段更新。
更新:
我还想避免硬编码值。与隐藏字段安全是唯一的问题。虽然在我目前的情况下,安全性不是一个大问题,但我可以遵循第二种选择。
那么是的,第二个选项对你更好。
澄清一下,即这将是硬编码:
int prize = 100;
但是,如果您在表单中询问奖品并且您有一个常量字段,例如:
// CONSTANT
private final Integer VAT = 18;
// ATTRIBUTE (filled by user in form)
int prize;
更新实体时,可以每次重新计算,例如含税奖品(未测试,慎用floating point error dividing)
// calculated field / attribute
double finalPrize = prize * VAT / 100;
那是使用常量,而不是硬编码,常量是我们的朋友;)
更新:安全
但我很想知道如果我必须保持这些值的安全
关于安全有很多方法,简单的一种?将不可更新的值保留在服务器端将完成这项工作,如果在客户端需要它们,您可以双重验证它们(javascript
/hibernate
)并(如果需要)加密以隐藏内容。
【讨论】:
很高兴为您提供帮助,如果您需要澄清或更多信息,请随时询问 感谢回复,但值不固定,我不能使用默认值。我也想避免硬编码值。有了隐藏的领域,安全是唯一的问题。虽然在我目前的情况下,安全性不是一个大问题,我可以遵循第二种选择。但我很想知道如果我必须保证这些值的安全。 关于安全有很多方法,简单的一种?将不可更新的值保留在服务器端即可完成工作,如果客户端需要它们,您可以双重验证它们(javascript/hibernate)并(如有必要)加密以隐藏内容 我可以根据不在数据库中的 url 请求进行硬编码。 然后你用一些常数计算值,你不用硬编码它;)以上是关于使用休眠和弹簧更新的主要内容,如果未能解决你的问题,请参考以下文章