2016-03-22 197 views
1

我有數據庫表懷疑,使用休眠逆向工程我已經創建了它的bean。我需要製作一份表格來更新這名嫌犯。使用休眠和彈簧更新

我做的是:

i。獲取可疑行(基於ID使用休眠)

ii。設置在一個嫌疑人名爲對象。

iii。作爲彈簧形式的命令對象傳遞它。

它從表格中成功顯示錶格中的數據。

表中有一些字段,我設置硬編碼通過一些邏輯。這些字段不存在於表單標籤中。所以當我保存(使用hibernate中的更新函數)這種形式。它將這些列值設置爲空。

什麼到現在我都覺得是​​可能有兩種解決方案:

  1. 創造更新的形式隱藏字段的所有此類字段或
  2. 他們很難再次更新的時間碼。

哪個更好,還有其他方法可以做到嗎?

回答

0

是否有其他方法可以做到這一點?

的方式適合你更多,你的數據庫或hibernate like in this question使用默認值:

如果你不想數據庫默認值,而僅僅是在Java代碼中的默認值 ,只是初始化這樣

您的變量將清除代碼,使邏輯更清晰:

private Integer myColumn = 100; 

無論如何,讓您解答:)

哪個更好?

取決於應用程序的需求。

  • 創造更新的形式隱藏字段爲所有這些領域

如果獲得該領域的邏輯具有很高的計算成本,你可以使用隱藏字段來保存這個計算成本,但只要你對這些數據進行了編碼,這似乎不是你的問題。

  • 在更新時再次對它們進行硬編碼。

硬編碼從來是大專院校的編程之外的選擇,但如果更新的字段可以改變這個固定值,最好的選擇是再次生成這個字段更新之前。

UPDATE:

我也想避免硬編碼值。隱藏領域安全只是關心。雖然在我目前的情況下,安全不是一個大問題,我可以按照第二個選項。

然後是的,第二種選擇對你更好。


要澄清,即這將是硬編碼:

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; 

這就是使用常量,而不是硬編碼和常量是我們的朋友;)


UPDATE:安全

但我很好奇,想知道如果我必須保持這些值的安全

關於安全有很多種方法,很簡單嗎?在服務器端保持不可更新的值將完成這項工作,如果它們在客戶端是必要的,您可以加倍驗證它們(javascript/hibernate),並且(如有必要)加密以隱藏內容。

+0

感謝您的回覆 – Anuja

+0

高興地幫助,請不要猶豫,問你是否需要澄清或更多信息 –

+0

感謝您的答覆,但值不固定我不能使用默認值。我也想避免硬編碼值。隱藏領域安全只是關心。儘管在我目前的情況下,安全並不是一個大問題,我可以按照第二個選項。但我很想知道如果我必須保持這些值的安全。 – Anuja