我在数据库中有表可疑,使用休眠逆向工程我创建了它的一个bean。我需要填写一张表格以更新此嫌疑犯。
我所做的是:
一世。提取可疑行(基于使用休眠的ID)
ii。设置在可疑的命名对象中。
iii。通过它作为弹簧形式的命令对象。
它以表格形式成功显示表中的数据。
表中有一些字段是通过一些逻辑设置的。这些字段在表单标签中不存在。所以当我保存(使用休眠中的更新功能)此表单时。它将这些列的值设置为null。
到现在为止,我感到可能有两种解决方案:
哪个更好,还有其他方法可以做到吗?
还有其他方法吗?
更适合您的方法是在数据库中或在休眠模式下使用默认值,例如以下问题:
如果您不希望数据库默认值,而只是Java代码中的默认值,则只需像这样初始化变量即可
将清理代码并使逻辑更清晰:
private Integer myColumn = 100;
无论如何,让我们回答您的问题 :)
哪个更好?
取决于应用程序的需求。
- 在更新表单中为所有此类字段创建隐藏字段
如果获取此字段的逻辑具有较高的计算成本,则可以使用隐藏字段来节省此计算成本,但是,只要您对这些数据进行了编码,这似乎就不是问题。
- 在更新时再次对其进行硬编码。
硬编码绝不是学术编程之外的选择,但是如果更新的字段可以更改此固定值,则最好的选择是在更新之前再次生成此字段。
更新:
我也想避免使用硬编码值。隐蔽区域的安全仅是关注的问题。虽然就我目前而言,安全性不是一个大问题,但我可以选择第二种方法。
是的,第二种选择对您来说更好。
为了澄清,即这将是硬编码:
int prize = 100;
但是,如果您以表格的形式询问奖金,并且您拥有一个不变的字段,例如:
// CONSTANT
private final Integer VAT = 18;
// ATTRIBUTE (filled by user in form)
int prize;
更新实体时,您可以每次进行重新计算,例如含税的奖金(未经测试,请谨慎使用浮点误差除法)
// calculated field / attribute
double finalPrize = prize * VAT / 100;
那是使用常量,而不是硬编码,并且常量是我们的朋友 ;)
更新:安全性
但我很好奇我是否必须保持这些价值观的安全
关于安全性有很多方法,容易吗?将不可更新的值保留在服务器端将完成此工作,如果在客户端需要它们,则可以对它们(javascript
/ hibernate
)进行两次验证,也可以(如果需要)对它们进行加密以隐藏内容。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句